1. 程式人生 > 其它 >SQL Server 觸發器

SQL Server 觸發器

觸發器定義

  • 觸發器是一種特殊型別的儲存過程,可以理解為對資料庫的某個表進行操作時會自動執行的儲存過程,觸發器可以指定其被呼叫的條件,只要滿足條件,觸發器就會被呼叫

觸發器條件

  • insert
  • update
  • delete

何時觸發

  • instead of :在sql語句執行前觸發
  • after: sql語句執行完成後再觸發

特殊表

  • 觸發器有兩個特殊的表:插入表(inserted表)和刪除表(deleted表)。這兩張是邏輯表也是虛表。有系統在記憶體中建立者兩張表,不會儲存在資料庫中。而且兩張表的都是隻讀的,只能讀取資料而不能修改資料。這兩張表的結果總是與被改觸發器應用的表的結構相同。當觸發器完成工作後,這兩張表就會被刪除。Inserted表的資料是插入或是修改後的資料,而deleted表的資料是更新前的或是刪除的資料

  • Update資料的時候就是先刪除表記錄,然後增加一條記錄。這樣在inserted和deleted表就都有update後的資料記錄了。注意的是:觸發器本身就是一個事務,所以在觸發器裡面可以對修改資料進行一些特殊的檢查。如果不滿足可以利用事務回滾,撤銷操作

例項1:

  • 刪除使用者表中的使用者後,(觸發)刪除其他庫中的存放的密碼錶中的使用者
use XXX
go
create trigger Tri_DeleteUser on User after delete
as
delete from XXX.dbo.UserAccount where guid = (select guid from deleted)