sqlbefore
『壹』 sql2000支持before 和 after嗎
不支持before,可以用instead of 來替代,不過用法有很大的區別。
SQL Server 2000 支持兩種類型的觸發器:
AFTER 觸發器和INSTEAD OF 觸發器。
FOR觸發器不是before,SQL Server只有INSTEAD OF和AFTER 兩種觸發器。默認識AFTER 的,所以說 FOR觸發器就是AFTER 觸發器。
<1>AFTER 觸發器
AFTER 觸發器即為SQL Server 2000 版本以前所介紹的觸發器。該類型觸發器要求只有執行某一操作(INSERT UPDATE DELETE) 之後,觸發器才被觸發,且只能在表上定義。可以為針對表的同一操作定義多個觸發器。對於AFTER 觸發器,可以定義哪一個觸發器被最先觸發,哪一個被最後觸發,通常使用系統過程sp_settriggerorder 來完成此任務。
<2>INSTEAD OF觸發器
INSTEAD OF 觸發器表示並不執行其所定義的操作(INSERT、 UPDATE、 DELETE),而僅是執行觸發器本身。既可在表上定義INSTEAD OF 觸發器,也可以在視圖上定義INSTEAD OF 觸發器,但對同一操作只能定義一個INSTEAD OF 觸發器。
<3>異同點
<3.1>After觸發器只能用於數據表中,Instead Of觸發器可以用於數據表和視圖上,但兩種觸發器都不可以建立在臨時表上。
<3.2>一個數據表可以有多個觸發器,但是一個觸發器只能對應一個表。
<3.3>在同一個數據表中,對每個操作(如Insert、Update、Delete)而言可以建立許多個After觸發器,但Instead Of觸發器針對每個操作只有建立一個。
<3.4>如果針對某個操作即設置了After觸發器又設置了Instead Of觸發器,那麼Instead of觸發器一定會激活,而After觸發器就不一定會激活了。