w3schools update trigger ejemplos ejemplo before and mysql triggers circular-dependency

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.