一.工作流程:
1.Instead of :
SQL Server接到執行SQL語句請求->建立臨時的Inserted 表與Deleted表->觸發Instead Of觸發器->結束。注意:此觸發器將代替原來要執行的Insert、Delete 或update操作;
例如:A表有一個關於Instead of Insert 的觸發器,向A表插入一行數據時,觸發器將要代替“向A表插入一行數據的操作”,至於什麼操作,由觸發器的內容決定;
2.After:
SQL Server接到執行SQL語句請求->建立臨時的Inserted 表與Deleted表->執行SQL語句->觸發Instead Of觸發器->結束。
二.Instead of 用途
1.多表連接的視圖數據更新,可以寫相應的Instead of 語句去更新多個表;
2.數據庫某些表禁止進行Insert、Delete、Update,則可以寫Instead of Insert、Instead of Delete、Instead of Update來屏蔽原來要進行的操作;
三.使用觸發器注意事項
1.觸發器與表或視圖的對應關係:After只可用於基本表,After與instead of 可用於基本表與視圖,一個表可以對應多個觸發器,一個觸發器只可以屬於一個表或視圖;
2.Instead of 類型的刪除、更新、插入操作,各只可出現一次,After類型則不限;
3.一個操作同時存在於Instead of 與After中時,Instead of 的一定會執行,After的則不一定會執行。如果Instead裏執行的是非激活類型的操作,則不會執行After裏面同種類型的操作。例如:Insert語句同時存在於Instead of 與After中,如果Instead of Insert 裏面執行的是非本表的Insert語句操作,那麼After Insert 就不會執行了。