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 テーブルの作成

  • トリガを起動する動作

次の処理の前

  • 制約処理

次の処理の代わり

  • トリガを起動する動作

次の処理の後

  • inserted テーブルと deleted テーブルの作成

実行の順序

最初と最後の実行内容を指定できます。

適用なし

inserted テーブルと deleted テーブル内の varchar(max)、nvarchar(max)、および varbinary(max) の列参照。

使用可能

使用可能

inserted テーブルと deleted テーブル内の text、ntext、および image の列参照。

使用不可

使用可能