update - trigger mysql w3schools
Cómo evitar las dependencias circulares de Trigger en MySQL (1)
Intenta usar la variable.
Primer disparador:
CREATE TRIGGER trigger1
BEFORE DELETE
ON table1
FOR EACH ROW
BEGIN
IF @deleting IS NULL THEN
SET @deleting = 1;
DELETE FROM table2 WHERE id = OLD.id;
SET @deleting = NULL;
END IF;
END
Segundo disparador:
CREATE TRIGGER trigger2
BEFORE DELETE
ON table2
FOR EACH ROW
BEGIN
IF @deleting IS NULL THEN
SET @deleting = 1;
DELETE FROM table1 WHERE id = OLD.id;
SET @deleting = NULL;
END IF;
END
Y desencadenadores adicionales DESPUÉS DE ELIMINAR:
CREATE TRIGGER trigger3
AFTER DELETE
ON table1
FOR EACH ROW
BEGIN
SET @deleting = NULL;
END
CREATE TRIGGER trigger4
AFTER DELETE
ON table2
FOR EACH ROW
BEGIN
SET @deleting = NULL;
END
Tengo un pequeño problema al usar Triggers en MySQL.
Supongamos que tenemos 2 tablas:
- TableA
- TableB
Y 2 disparadores:
- TriggerA: se dispara al eliminar en TableA y actualiza TableB
- TriggerB: se dispara al eliminar en TableB y se elimina en TableA
El problema es que cuando elimino algunas filas en TableB, TriggerB desencadena y elimina algunos elementos en TableA, luego TriggerA dispara e intenta actualizar TableB.
Falla porque TriggerA intenta actualizar algunas filas en TableB que se están eliminando.
¿Cómo puedo evitar estas dependencias circulares?
Ninguno de esos dos desencadenantes es inútil, así que no sé qué se supone que debo hacer para resolver esto.