español errores error mysql triggers mysql-error-1046

errores - MySQL Trigger: Borrar de la tabla DESPUÉS DE BORRAR



errores mysql en español (3)

¿Por qué no establecer ON CASCADE DELETE on Foreign Key patron_info .pid?

Ámbito: dos tablas. Cuando se crea un nuevo usuario, se almacena cierta información sobre ellos en una segunda tabla (esto también se hizo usando un disparador, funciona como se esperaba). Aquí hay un ejemplo de mi estructura de tabla y relación.

Tabla 1-> patrones

+-----+---------+-----+ + id + name + val + +=====+=========+=====+ + 37 + george + x + +-----+---------+-----+ + 38 + sally + y + +-----+---------+-----+

Tabla 2 -> patron_info

+----+-----+----------+ + id + pid + name + +----+-----+----------+ + 1 + 37 + george + +----+-----+----------+ + 2 + 38 + sally + +----+-----+----------+

El administrador puede gestionar los clientes. Cuando eligen eliminar un usuario, éste se elimina de los patrons de la tabla 1 . En este punto, nada le sucede a la tabla 2 patron_info .

Simplemente estoy tratando de crear un disparador para eliminar de la tabla 2, cuando la tabla 1 tiene un elemento eliminado. Esto es lo que he intentado ...

Inicialmente, trato de soltar el gatillo si existe (solo para limpiar el aire) ...

DROP TRIGGER IF EXISTS log_patron_delete;

Luego trato de crear el disparador después ...

CREATE TRIGGER log_patron_delete AFTER DELETE on patrons FOR EACH ROW BEGIN DELETE FROM patron_info WHERE patron_info.pid = patrons.id END

En este punto, recibo un error de sintaxis 1046: Check syntax near END on line 6 . No sé cuál es el error en este punto. He probado varias variaciones diferentes. Además, ¿estoy obligado a usar un delimitador aquí?

¿Alguien puede ayudar a restaurar mi cordura?


Creo que hay un error en el código de activación. Como desea eliminar todas las filas con el ID de usuario eliminado, tiene que usar old.id (de lo contrario, se eliminarán otros ID)

Intenta esto como el nuevo disparador:

CREATE TRIGGER log_patron_delete AFTER DELETE on patrons FOR EACH ROW BEGIN DELETE FROM patron_info WHERE patron_info.pid = old.id; END

No olvides el ";" en la consulta de eliminación. Además, si está ingresando el código TRIGGER en la ventana de la consola, haga uso de los delimitadores también.


create trigger doct_trigger after delete on doctor for each row delete from patient where patient.PrimaryDoctor_SSN=doctor.SSN ;