After和Instead of觸發器,instead觸發器

來源:互聯網
上載者:User

After和Instead of觸發器,instead觸發器

l  After觸發器:這類觸發器是在記錄已經改變完之後(after),才會被啟用執行,它主要是用於記錄變更後的處理或檢查,一旦發現錯誤,也可以用Rollback Transaction語句來復原本次的操作。

l  Instead Of觸發器:這類觸發器一般是用來取代原本的操作,在記錄變更之前發生的,它並不去執行原來SQL語句裡的操作(Insert、Update、Delete),而去執行觸發器本身所定義的操作。

 After觸發器的工作原理

 

After觸發器是在記錄更變完之後才被啟用執行的。以刪除記錄為例:當SQL Server接收到一個要執行刪除操作的SQL語句時,SQL Server先將要刪除的記錄存放在刪除表裡,然後把資料表裡的記錄刪除,再啟用After觸發器,執行After觸發器裡的SQL語句。執行完畢之後,刪除記憶體中的刪除表,退出整個操作。

還是舉上面的例子:在產品庫存表裡,如果要刪除一條產品記錄,在刪除記錄時,觸發器可以檢查該產品庫存數量是否為零,如果不為零則取消刪除操作。看一下資料庫是怎麼操作的:

(1)接收SQL語句,將要從產品庫存表裡刪除的產品記錄取出來,放在刪除表裡。

(2)從產品庫存表裡刪除該產品記錄。

(3)從刪除表裡讀出該產品的庫存數量欄位,判斷是不是為零,如果為零的話,完成操作,從記憶體裡清除刪除表;如果不為零的話,用Rollback Transaction語句來復原操作。

Instead Of觸發器的工作原理

 

Instead Of觸發器與After觸發器不同。After觸發器是在Insert、Update和Delete操作完成後才啟用的,而Instead Of觸發器,是在這些操作進行之前就啟用了,並且不再去執行原來的SQL操作,而去運行觸發器本身的SQL語句。

 

注意事項:

l  After觸發器只能用於資料表中,Instead Of觸發器可以用於資料表和視圖上,但兩種觸發器都不可以建立在暫存資料表上。

l  一個資料表可以有多個觸發器,但是一個觸發器只能對應一個表。

l  在同一個資料表中,對每個操作(如Insert、Update、Delete)而言可以建立許多個After觸發器,但Instead Of觸發器針對每個操作只有建立一個。

l  如果針對某個操作即設定了After觸發器又設定了Instead Of觸發器,那麼Instead of觸發器一定會啟用,而After觸發器就不一定會啟用了。

l  Truncate Table語句雖然類似於Delete語句可以刪除記錄,但是它不能啟用Delete類型的觸發器。因為Truncate Table語句是不記入日誌的。

l  WRITETEXT語句不能觸發Insert和Update型的觸發器。

l  不同的SQL語句,可以觸發同一個觸發器,如Insert和Update語句都可以啟用同一個觸發器。

 

 

 Instead Of觸發器的使用範圍

Instead Of觸發器可以同時在資料表和視圖中使用,通常在以下幾種情況下,建議使用Instead Of觸發器:

l  資料庫裡的資料禁止修改:例如電信部門的通話記錄是不能修改的,一旦修改,則通話費用的計數將不正確。在這個時候,就可以用Instead Of觸發器來跳過Update修改記錄的SQL語句。

l  有可能要復原修改的SQL語句:如11.5.3節中的例二,用After觸發器並不是一個最好的方法,如果用Instead Of觸發器,在判斷折扣大於0.6時,就中止了更新操作,避免在修改資料之後再復原操作,減少伺服器負擔。

l  在視圖中使用觸發器:因為After觸發器不能在視圖中使用,如果想在視圖中使用觸發器,就只能用Instead Of觸發器。

l  用自己的方式去修改資料:如不滿意SQL直接的修改資料的方式,可用Instead Of觸發器來控制資料的修改方式和流程。

 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.