So vermeiden Sie den ORA-04091-Fehler innerhalb eines Triggers

Ich habe einen After-Update-Trigger (Trigger A) in Tabelle A, der Änderungen an Tabelle B vornehmen kann.

Ich habe auch einen After-Update-Trigger (Trigger B) für Tabelle B, der keine Änderungen vornimmt, aber Tabelle A nach einer Denormalisierung abfragt, um die Richtigkeit zu überprüfen.

Trigger B kann also auf zwei Arten ausgelöst werden:

wenn ich Tabelle B direkt aktualisiere, oderWenn ich Tabelle A aktualisiere und Trigger A auslöst, wird Tabelle B aktualisiert.

In Fall 2 erhalte ich ein ORA-04091: Tabellenname mutiert, Trigger / Funktion sehen möglicherweise keinen Fehler. Das scheint richtig zu sein.

Ich möchte in Trigger B prüfen, ob Tabelle A "in einem schlechten Zustand" ist und vorzeitig beendet wird (in diesem Fall müssten die Überprüfungen nicht durchgeführt werden).

Was ist der beste Weg, um dies in meinem Trigger zu testen? Fügen Sie einfach einen Exception-Handler hinzu, der die Exception verschluckt. Gibt es etwas anmutigeres?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage