Planungsrichtlinien für DML-Trigger

Beim Entwerfen von DML-Triggern werden zwei Optionen bereitgestellt:

  • INSTEAD OF-Trigger werden anstelle der üblichen Triggeraktion ausgeführt. INSTEAD OF-Trigger können auch für Sichten mit mindestens einer Basistabelle definiert werden. In diesem Fall können sie die Aktualisierungstypen erweitern, die von einer Sicht unterstützt werden.

  • AFTER-Trigger werden nach der INSERT-, UPDATE- oder DELETE-Anweisung ausgeführt. Das Angeben von AFTER hat dieselben Auswirkungen wie das Angeben von FOR. AFTER-Trigger können nur in Tabellen angegeben werden.

In der folgenden Tabelle werden die Funktionen von AFTER- und INSTEAD OF-Triggern verglichen.

Funktion

AFTER-Trigger

INSTEAD OF-Trigger

Anwendbarkeit

Tabellen

Tabellen und Sichten

Anzahl pro Tabelle oder Sicht

Mehrere Trigger pro auslösende Aktion (INSERT, UPDATE oder DELETE)

Ein Trigger pro auslösende Aktion (INSERT, UPDATE oder DELETE)

Kaskadierende Verweise

Keine Einschränkungen

INSTEAD OF UPDATE- und DELETE-Trigger sind nicht für Tabellen zulässig, die Ziel von kaskadierenden Einschränkungen für die referenzielle Integrität sind.

Ausführung

Nach:

  • Einschränkungsverarbeitung

  • Deklarativen referenziellen Aktionen

  • Erstellung der inserted- und deleted-Tabellen

  • Der auslösenden Aktion

Vor:

  • Einschränkungsverarbeitung

Anstelle:

  • Der auslösenden Aktion

Nach:

  • Erstellung der inserted- und deleted-Tabellen

Ausführungsreihenfolge

Der zuerst und zuletzt auszuführende Trigger kann angegeben werden.

Nicht anwendbar

Verweise auf varchar(max)-, nvarchar(max)- und varbinary(max)-Spalten in den inserted- und deleted-Tabellen

Zulässig

Zulässig

Verweise auf text-, ntext- und image-Spalten in den inserted- und deleted-Tabellen

Nicht zulässig

Zulässig