Angeben des Auslösungszeitpunktes eines DML-Triggers
Sie haben zwei Möglichkeiten, zu steuern, wann ein DML-Trigger ausgelöst wird:
AFTER-Trigger werden nach der auslösenden Aktion (INSERT, UPDATE oder DELETE) und nach der Verarbeitung von INSTEAD OF-Triggern und Einschränkungen ausgelöst. Sie fordern AFTER-Trigger durch Angeben des AFTER- oder FOR-Schlüsselwortes an. Da das FOR-Schlüsselwort dieselbe Wirkung wie das AFTER-Schlüsselwort hat, werden DML-Trigger mit dem FOR-Schlüsselwort ebenfalls als AFTER-Trigger bezeichnet.
INSTEAD OF-Trigger werden anstelle der auslösenden Aktion und vor der Verarbeitung von Einschränkungen ausgelöst. Wenn in der Tabelle AFTER-Trigger vorhanden sind, werden sie nach der Verarbeitung der Einschränkungen ausgelöst. Falls eine Verletzung der Einschränkungen vorliegt, wird für die Aktionen des INSTEAD OF-Triggers ein Rollback ausgeführt. Der AFTER-Trigger wird nicht ausgeführt.
Für jede auslösende Aktion (UPDATE, DELETE oder INSERT) kann eine Tabelle oder Sicht nur einen INSTEAD OF-Trigger aufweisen. Bei einer Tabelle sind für jede auslösende Aktion mehrere AFTER-Trigger zulässig.
Beispiele
A. Verwenden des INSTEAD OF-Triggers, um die standardmäßige auslösende Aktion zu ersetzen
CREATE TRIGGER TableAInsertTrig ON TableA
INSTEAD OF INSERT
AS ...
B. Verwenden des AFTER-Triggers, um die standardmäßige auslösende Aktion zu erweitern
CREATE TRIGGER TableBDeleteTrig ON TableB
AFTER DELETE
AS ...
C. Verwenden des FOR-Triggers, um die standardmäßige auslösende Aktion zu erweitern
-- This statement uses the FOR keyword to generate an AFTER trigger.
CREATE TRIGGER TableCUpdateTrig ON TableC
FOR UPDATE
AS ...