Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Gespeicherte Prozeduren, Trigger, Batches und benutzerdefinierte Funktionen » Trigger

 

Erweiterte Informationen zu Triggern

Ein schwierig zu verstehender Aspekt bei Triggern ist die Reihenfolge, in der Trigger ausgelöst werden, wenn ein auslösender Vorgang Auswirkungen auf mehrere Trigger hat. Ob konkurrierende Trigger ausgelöst werden und in welcher Reihenfolge sie ausgelöst werden, hängt von zwei Dingen ab: Triggertyp (BEFORE, INSTEAD OF oder AFTER) und Triggerbereich (Zeilen- oder Anweisungsebene).

Mit UPDATE-Anweisungen können Spaltenwerte in mehr als einer Tabelle geändert werden. Die Sequenz der Trigger-Auslösung ist für jede Tabelle gleich, aber die Reihenfolge, in der die Tabellen aktualisiert werden, ist nicht garantiert.

Für Trigger auf Zeilenebene gilt: BEFORE-Trigger werden vor INSTEAD OF-Triggern ausgelöst, die wiederum vor AFTER-Triggern ausgelöst werden. Alle Trigger auf Zeilenebene für eine bestimmte Zeile werden vor den Triggern für die Folgezeile ausgelöst.

Bei Triggern auf Anweisungsebene werden INSTEAD OF-Trigger vor AFTER-Triggern ausgelöst. BEFORE-Trigger auf Anweisungsebene werden nicht unterstützt.

Wenn es konkurrierende AFTER-Trigger auf Anweisungs- und Zeilenebene gibt, werden die AFTER-Trigger auf Anweisungsebene ausgelöst, nachdem alle Trigger auf Zeilenebene beendet wurden.

Wenn es konkurrierende INSTEAD OF-Trigger auf Anweisungs- und Zeilenebene gibt, werden die Trigger der Zeilenebene nicht ausgelöst.

Die für den AFTER STATEMENT-Trigger erstellten temporären Tabellen haben dasselbe Schema wie die Basistabelle, mit denselben Spaltennamen und Datentypen. Diese Tabellen enthalten jedoch keine Primärschlüssel, Fremdschlüssel oder Indizes. Die Reihenfolge der Zeilen in den temporären Tabellen ist nicht garantiert und stimmt möglicherweise nicht mit der Reihenfolge überein, in der die Zeilen der Basistabelle ursprünglich aktualisiert wurden.


INSTEAD OF-Trigger