Wie eine Folge von SQL-Trigger Fire

Sie können sich wahrscheinlich eine Komplikation in der Art und Weise SQL-Trigger arbeiten zu sehen. Angenommen, Sie einen Trigger erstellen, die eine SQL-Anweisung veranlasst, auf einem Tisch bei der Ausführung irgendeines vorangegangenen SQL-Anweisung ausgeführt werden. Was, wenn das getriggerte Aussage selbst erzeugt eine zweite Trigger ausgelöst?

Das zweite Auslöser verursacht eine dritte SQL-Anweisung in einer zweiten Tabelle ausgeführt werden, die sich noch einen weiteren Auslöser einen Brand verursachen können, beeinflussen noch eine andere Tabelle. Wie ist es möglich, alles gerade zu halten? SQL behandelt diese Maschinengewehr-Stil-Trigger mit etwas Brennen genannt Trigger-Ausführungskontexte.

Eine Folge von EINFÜGEN, LÖSCHEN, und AKTUALISIEREN Operationen können durch Verschachtelung der Kontexte durchgeführt werden, in denen sie auftreten. Wenn ein Trigger ausgelöst wird, wird ein Ausführungskontext erstellt. Es kann nur ein Ausführungskontext zu einer Zeit aktiv sein. In diesem Zusammenhang kann eine SQL-Anweisung ausgeführt, dass eine zweite Trigger auslöst.

An diesem Punkt wird die bestehende Ausführungskontext in einem Vorgang analog zu drängen Wert auf einen Stapel suspendiert. Eine neue Ausführungskontext, auf den zweiten Trigger entspricht, erzeugt wird, und dessen Betrieb wird durchgeführt.

Es gibt keine willkürliche Begrenzung der Tiefe der Verschachtelung möglich. Wenn ein Vorgang abgeschlossen ist, wird seine Ausführungskontext zerstört, und die nächsthöhere Ausführungskontext ist # 147-knallte den Stapel # 148- und reaktiviert wird. Dieser Prozess wird fortgesetzt, bis alle Aktionen abgeschlossen sind und alle Ausführungskontexte wurden zerstört.

Menü