Ich versuche einen Trigger auszulösen, der owner_notif_sta nach einer Aktualisierung oder Einfügung in owner_notif_sta auf null setzt, wenn owner_id null ist. Sowohl owner_id als auch owner_notif_sta stammen aus derselben Tabelle.Derby ERROR 54038: Maximale Tiefe verschachtelter Trigger wurde überschritten
Der Auslöser:
CREATE TRIGGER check_owner
AFTER UPDATE OF owner_notif_sta ON risk
REFERENCING OLD AS EXISTING
FOR EACH ROW MODE DB2SQL
UPDATE risk SET owner_notif_sta = NULL
WHERE owner_id IS NULL;
Das Update ich Feuer geläutert:
UPDATE RISK SET owner_notif_sta = 'helloo' WHERE risk_id = 'ICT123';
und OWNER_ID null war (nicht aufgefüllt, wenn ich das Update gefeuert)
und ich erhielt die folgende Fehler: Fehler 54038: Maximale Tiefe der verschachtelten Trigger wurde überschritten.
Vielen Dank im Voraus
Ihnen danken. Ich habe das versucht, aber ich denke, dass Derby keine If else-Anweisungen unterstützt. –
Ich habe meine Antwort bearbeitet. Ich denke, es ist viel einfacher und es sollte funktionieren. Fügen Sie am Ende der 'UPDATE'-Anweisung im Trigger einfach' AND owner_notif_sta IS NOT NULL' hinzu. Es sollte die rekursiven Trigger-Aufrufe verhindern. – sstan
Ich sollte hinzufügen, da dies ein Zeilentrigger ist, bin ich überrascht, dass Ihre Update-Anweisung keine 'Where'-Klausel für eine Schlüssel- oder ID-Spalte hat (z. B .:' where id = existing.id) '. Ich würde erwarten, dass das Update auf eine einzige Zeile beschränkt ist, aber das sehe ich nicht. Das ist vielleicht etwas anderes, was du sehen musst. – sstan