sql觸發器insteadof
⑴ instead of instead觸發器是 什麼觸發器啊
INSTEAD OF 觸發器是sql Server 2000 的新添加的功能,AFTER 觸發器等同於以前版本中的觸發器。當為表或視圖定義了針對某一操作(INSERT、 DELETE、 UPDATE) 的INSTEAD OF 類型觸發器且執行了相應的操作時,盡管觸發器被觸發,但相應的操作並不被執行,而運行的僅是觸發器SQL 語句本身。
INSTEAD OF 觸發器的主要優點是使不可被修改的視圖能夠支持修改。其中典型的例子是分割視圖(partitioned view)。為了提高查詢性能,分割視圖通常是一個來自多個表的結果集,但是也正因此而不支持視圖更新。下面的例子說明了如何使用INSTEAD OF觸發器來支持對分割視圖所引用的基本表的修改。
⑵ sql中觸發器instead of 和after的區別是什麼
after觸發器是在操作成功後,所採取的一些動作,而對於instead of觸發器,對資料庫的操作只是
一個「導火線」而已,真正起作用的是觸發器裡面的動作;往往這種觸發器會有很多分支判斷語句在裡面,根據不用的條件做不同的動作觸發器能處理更復雜的約束--簡單的可用級聯及簡單約束來實現。
看看這個就差不多明白了:http://bbs.csdn.net/topics/300074591
⑶ sql語句的觸發器問題,instead of、after、for事件的區別,還有execute as字句的使用。謝謝
after等價於for,是事後觸發。instead of則會取代原來的操作,例如在你的例子里,將不再執行插入操作,而是執行觸發器里的操作。
execute as是用來定義模塊的執行上下文
EXECUTE AS { CALLER | SELF | OWNER | 'user_name' }
其中CALLER指模塊調用方,SELF指創建或更改模塊的用戶,OWNER指模塊的當前所有者, 『user_name』 則是指定的用戶。