觸發器的Instead of 與 After

 一.工作流程:

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 就不會執行了。

發佈了15 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章