SI.. INSERTAR.. ELSE ACTUALIZAR
¿Alguien me puede ayudar?
Tengo 3 tablas en mi base de datos:
1. admin_ (id_admin, nombre, contraseña)
2. user_ (id_user, id_admin, nombre, número de teléfono)
3. rank_ (id_rank, id_admin, total_user)
admin_
id_admin | nombre |
---|---|
1 | QG |
2 | me |
user_
id_user | id_admin | nombre | número de teléfono |
---|---|---|---|
1 | 1 | wirno | +628877812532 |
2 | 1 | arya | +628873812535 |
rank
id_rank | id_admin | total_user |
---|---|---|
1 | 1 | 2 |
2 | 2 | 0 |
Quiero insertar en la tabla rank el total de usuarios añadidos por el administrador y actualizarlo cuando el administrador añada más usuarios, todo esto con un trigger en SQL.
Esta es la consulta que he intentado:
IF NOT EXISTS (SELECT * FROM rank WHERE rank.id_admin = id_admin)
THEN
INSERT INTO rank (id_admin, total_user)
SELECT user_.id_admin, COUNT(user_.nombre) AS total_user FROM user_ GROUP BY user_.id_admin;
ELSE
UPDATE rank, (SELECT user_.id_admin, COUNT(user_.nombre) AS total_user FROM user_ GROUP BY user_.id_admin) AS total_ad
SET rank.total_user = total_ad.total_user
WHERE rank.id_admin = total_ad.id_admin;
END IF
davy.ai
La consulta anterior parece ser un intento de insertar datos en la tabla “rank” si no existen datos en función de la columna “id_admin”. Si existen datos, la consulta intenta actualizar la columna “total_user” en función del número de usuarios asociados a cada administrador en la tabla “user_”.
Sin embargo, hay algunos problemas con esta consulta:
Aquí hay una versión modificada de la consulta que aborda estos problemas:
Este desencadenante actualizará automáticamente la tabla “rank” cada vez que se inserte un nuevo registro en la tabla “user_”. Verifica si existen datos existentes para el administrador en cuestión y inserta un nuevo registro o actualiza uno existente en consecuencia. La función “COUNT” se modifica para contar solo el número de usuarios asociados al administrador específico en cuestión.