|
引述
首先, 說下我寫篇文章的目的,我希望能把我對觸發器的理解,分享出來與你一起學習。如果你有對觸發器和事務的概念,有些了解,這篇文章,對你來說會是很簡單,或能讓你更進一步的了解觸發器里面的一些故事,和觸發器中事務個故事。在這邊文章里面,我不會從觸發器和事務的概念去講述,而是從常見的兩種觸發器類型(DML觸發器 & DDL觸發器)和After觸發器 & Instead Of 觸發器的應用不同,開始說起它們,然后是說與事務有關的故事。如果,你有什么建議和意見,都可以通過文章后面的回復與我溝通,或者通過E-Mail方式,與 我交流;我的Email地址是:glal@163.com
在下面的內容,用到一些SQL Server 觸發器和事務的一些術語,如果有些不明白的地方,可以查閱MSDN資料庫,或SQL Server本地幫助文檔:
- DML觸發器(DML Triggers)
- DDL觸發器(DDL Triggers)
- 事務模式(Transaction modes)
- 顯式事務(Explicit Transactions)
- 自動提交事務(Autocommit Transactions)
- 隱式事務(Implicit Transactions)
- 批范圍的事務(Batch-scoped Transactions)
After觸發器 Vs Instead Of觸發器
After 觸發器將在處理觸發操作(Insert、Update 或 Delete)、Instead Of 觸發器和約束之后激發。Instead Of是將在處理約束前激發,以替代觸發操作。下面兩張圖描述了After觸發器和Instead Of觸發器的執行先后順序。 左邊的圖1,描述了After觸發器執行順序情況,我在這里通過一個簡單的例子來說明After觸發器的執行順序,以便能加深對左圖1 After觸發器的理解。先創建表Contact:
use tempdb
Go
if object_id('Contact') Is Not null
Drop Table Contact
Go
Create Table Contact
(
ID int Primary Key Identity(1,1),
Name nvarchar(50),
Sex nchar(2) Check(Sex In(N'F',N'M')) Default('M')
)
Go
it知識庫:了解SQL Server觸發器及觸發器中的事務,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。