有兩個用于設計 DML 觸發器的選項:
執行 INSTEAD OF 觸發器代替通常的觸發操作。還可以對帶有一個或多個基表的視圖定義 INSTEAD OF
觸發器,這些觸發器可以擴充視圖可支援的更新類型。
在執行 INSERT、UPDATE 或 DELETE 語句操作之後執行 AFTER 觸發器。指定 AFTER 與指定 FOR 相同。AFTER
觸發器隻能在表上指定。
下表對 AFTER 觸發器和 INSTEAD OF 觸發器的功能進行了比較。
函數
AFTER 觸發器
INSTEAD OF 觸發器
适用範圍
表
表和視圖
每個表或視圖包含觸發器的數量
每個觸發操作(UPDATE、DELETE 和 INSERT)包含多個觸發器
每個觸發操作(UPDATE、DELETE 和 INSERT)包含一個觸發器
級聯引用
無任何限制條件
不允許在作為級聯引用完整性限制目标的表上使用 INSTEAD OF UPDATE 和 DELETE 觸發器。
執行
晚于:
限制處理
聲明性引用操作
建立<b>插入的</b>和<b>删除的</b>表
觸發操作
早于:
替代:
執行順序
可指定第一個和最後一個執行
不适用
<b>插入的</b>和<b>删除的</b>表中的 <b>varchar(max)</b>、<b>nvarchar(max)</b> 和
<b>varbinary(max)</b> 列引用。
允許
<b>插入的</b>和<b>删除的</b>表中的 <b>text</b>、<b>ntext</b> 和 <b>image</b>
列引用。
不允許