SQL Server 觸發器
阿新 • • 發佈:2021-08-13
觸發器定義
- 觸發器是一種特殊型別的儲存過程,可以理解為對資料庫的某個表進行操作時會自動執行的儲存過程,觸發器可以指定其被呼叫的條件,只要滿足條件,觸發器就會被呼叫
觸發器條件
- 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)