DML 觸發程序計畫指導方針
在設計 DML 觸發程序時有兩個選項可以選擇:
INSTEAD OF 觸發程序是用來代替正常的觸發動作。INSTEAD OF 觸發程序也可以針對具有一或多個基底資料表之檢視來定義,以延伸檢視可支援的更新類型。
AFTER 觸發程序會在執行過 INSERT、UPDATE 或 DELETE 陳述式的動作後才執行。指定 AFTER 和指定 FOR 是一樣的。AFTER 觸發程序只能針對資料表來指定。
下表比較 AFTER 與 INSTEAD OF 觸發程序的功能。
函數 |
AFTER 觸發程序 |
INSTEAD OF 觸發程序。 |
---|---|---|
適用性 |
資料表 |
資料表與檢視 |
每個資料表或檢視的數量 |
每個觸發動作 (UPDATE、DELETE 與 INSERT) 有多個 |
每個觸發動作 (UPDATE、DELETE 與 INSERT) 各一個 |
串聯參考 |
沒有限制 |
INSTEAD OF UPDATE 及 DELETE 觸發程序不允許用於串聯參考完整性條件約束的目標資料表。 |
執行 |
之後:
|
之前:
取代:
之後:
|
執行順序 |
可指定第一和最後一個執行 |
不適用 |
inserted 與 deleted 資料表參考 varchar(max)、nvarchar(max) 以及 varbinary(max) 資料行。 |
允許 |
允許 |
inserted 與 deleted 資料表參考 text、ntext 以及 image 資料行。 |
不允許 |
允許 |