SqlServer 觸發器使用整理(一)

一、什麼是觸發器

1.觸發器是對錶進行插入、更新、刪除操作時自動執行的存儲過程

2.觸發器通常用於強制業務規則

3.觸發器是一種高級約束,可以定義比check等約束更爲複雜的約束

 可執行復雜的sql語句(if/while/case)

 可引用其它表中的列

4.觸發器定義在特定的表上,與表相關

5.自動觸發執行,不能直接調用

6.是一個事務(可回滾,不能手動提交)

 

二、觸發器的類型

delete觸發器 當刪除表中記錄時觸發,自動執行觸發器所定義的SQL語句

insert觸發器 當向表中插入數據時觸發,自動執行觸發器所定義的SQL語句

update觸發器 當更新表中某列、多列時觸發,自動執行觸發器所定義的SQL語句

 

三、 deletedinserted

觸發器觸發時

  1.系統自動在內存中創建deleted表或inserted

  2.只讀,不允許修改;觸發器執行完後,自動刪除

inserted:用於存儲 INSERT  UPDATE 語句所影響的行的副本。

1.在執行INSERT  UPDATE 語句時,新加行被同時添加到 inserted 表和觸發器表中,所以inserted表臨時保存了插入或更新後的記錄行

2.可以從inserted中檢查插入的數據是否滿足業務需求,如果不滿足,則向用戶報告錯誤消息,並回滾插入操作

 3. 可以執行ROLLBACK TRANSACTION回滾撤銷操作

 

deleted表:表用於存儲 DELETE  UPDATE 語句所影響的行的副本

1.在執行 DELETE  UPDATE 語句時,行從觸發器表中刪除,並傳輸到 deleted 表中,所以deleted表臨時保存了刪除或更新前的記錄行

2.可從deleted表中檢查被刪除的數據是否滿足業務需求, 如果不滿足,則向用戶報告錯誤消息,並回滾插入操作

注意:更新(UPDATE)語句類似於在刪除之後執行插入;首先舊行被複制到 deleted 表中,然後新行被複制到觸發器表和 inserted 表中

 

四、如何創建觸發器

1.創建觸發器的語法

create trigger trigger_name

on table_name

for [delete|insert|update]

as

   t-sql語句

go

總結:

觸發器是在對錶進行插入、更新或刪除操作時自動執行的存儲過程,觸發器通常用於強制業務規則

觸發器還是一個特殊的事務單元,當出現錯誤時,可以執行ROLLBACK TRANSACTION回滾撤銷操作

觸發器一般都需要使用臨時表:deleted表和inserted表,它們存放了被刪除或插入的記錄行副本

觸發器類型:INSERT觸發器、UPDATE觸發器、DELETE觸發器

 

更多:

SqlServer ErrorLog 簡介和清空

sql server 無法覆蓋文件 'xxxx' 數據庫 'xxx' 正在使用該文件。

 SqlServer 遊標(一)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章