Freigeben über


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 ...

Siehe auch

Konzepte