DML トリガの起動条件の指定
次の 2 つのオプションのいずれかを指定すると、DML トリガの起動条件を制御できます。
- AFTER トリガは、トリガを起動する動作 (INSERT、UPDATE、または DELETE)、INSTEAD OF トリガ、および制約処理の後に起動されます。AFTER トリガは、AFTER キーワードまたは FOR キーワードのいずれかを指定して要求できます。FOR キーワードには、AFTER キーワードと同じ効果があるため、FOR キーワードを使用する DML トリガは AFTER トリガとして分類されます。
- INSTEAD OF トリガは、制約処理の前に、トリガを起動する動作の代わりに起動されます。テーブルに AFTER トリガが存在する場合、これらのトリガは、制約処理の後に起動されます。制約違反の場合は、INSTEAD OF トリガ動作がロールバックされ、AFTER トリガは実行されません。
各テーブルまたはビューには、トリガを起動する動作 (UPDATE、DELETE、および INSERT) ごとに 1 つの INSTEAD OF トリガを格納できます。1 つのテーブルには、トリガを起動する動作ごとに複数の AFTER トリガを格納できます。
例
A. トリガを起動する動作の標準処理の代わりに INSTEAD OF トリガを使用する
CREATE TRIGGER TableAInsertTrig ON TableA
INSTEAD OF INSERT
AS ...
B. トリガを起動する動作の標準処理を拡張するために AFTER トリガを使用する
CREATE TRIGGER TableBDeleteTrig ON TableB
AFTER DELETE
AS ...
C. トリガを起動する動作の標準処理を拡張するために FOR トリガを使用する
-- This statement uses the FOR keyword to generate an AFTER trigger.
CREATE TRIGGER TableCUpdateTrig ON TableC
FOR UPDATE
AS ...