DML トリガのプランニング ガイドライン
DML トリガを設計する際に次の 2 つのオプションが用意されています。
INSTEAD OF トリガは、トリガを起動する通常の動作の代わりに実行されます。また、INSTEAD OF トリガは、1 つ以上のベース テーブルを持つビューに定義することもでき、ビューでサポートされる更新の種類を拡張できます。
AFTER トリガは、INSERT、UPDATE、または DELETE ステートメントの動作が実行された後に実行されます。AFTER を指定することは、FOR を指定することと同じ意味を持ちます。AFTER トリガはテーブルにのみ指定できます。
次の表は、AFTER トリガと INSTEAD OF トリガの機能を比較したものです。
機能 |
AFTER トリガ |
INSTEAD OF トリガ |
---|---|---|
適用範囲 |
テーブル |
テーブルとビュー |
テーブルまたはビューごとの数 |
トリガを起動する動作 (UPDATE、DELETE、および INSERT) ごとに複数指定できます。 |
トリガを起動する動作 (UPDATE、DELETE、および INSERT) ごとに 1 つしか指定できません。 |
連鎖参照 |
制限はありません。 |
INSTEAD OF UPDATE トリガと DELETE トリガは、参照整合性制約の連鎖の対象となっているテーブルでは許可されません。 |
実行されるタイミング |
次の処理の後
|
次の処理の前
次の処理の代わり
次の処理の後
|
実行の順序 |
最初と最後の実行内容を指定できます。 |
適用なし |
inserted テーブルと deleted テーブル内の varchar(max)、nvarchar(max)、および varbinary(max) の列参照。 |
使用可能 |
使用可能 |
inserted テーブルと deleted テーブル内の text、ntext、および image の列参照。 |
使用不可 |
使用可能 |