|
引述
首先, 說下我寫篇文章的目的,我希望能把我對觸發(fā)器的理解,分享出來與你一起學(xué)習(xí)。如果你有對觸發(fā)器和事務(wù)的概念,有些了解,這篇文章,對你來說會是很簡單,或能讓你更進一步的了解觸發(fā)器里面的一些故事,和觸發(fā)器中事務(wù)個故事。在這邊文章里面,我不會從觸發(fā)器和事務(wù)的概念去講述,而是從常見的兩種觸發(fā)器類型(DML觸發(fā)器 & DDL觸發(fā)器)和After觸發(fā)器 & Instead Of 觸發(fā)器的應(yīng)用不同,開始說起它們,然后是說與事務(wù)有關(guān)的故事。如果,你有什么建議和意見,都可以通過文章后面的回復(fù)與我溝通,或者通過E-Mail方式,與 我交流;我的Email地址是:glal@163.com
在下面的內(nèi)容,用到一些SQL Server 觸發(fā)器和事務(wù)的一些術(shù)語,如果有些不明白的地方,可以查閱MSDN資料庫,或SQL Server本地幫助文檔:
- DML觸發(fā)器(DML Triggers)
- DDL觸發(fā)器(DDL Triggers)
- 事務(wù)模式(Transaction modes)
- 顯式事務(wù)(Explicit Transactions)
- 自動提交事務(wù)(Autocommit Transactions)
- 隱式事務(wù)(Implicit Transactions)
- 批范圍的事務(wù)(Batch-scoped Transactions)
After觸發(fā)器 Vs Instead Of觸發(fā)器
After 觸發(fā)器將在處理觸發(fā)操作(Insert、Update 或 Delete)、Instead Of 觸發(fā)器和約束之后激發(fā)。Instead Of是將在處理約束前激發(fā),以替代觸發(fā)操作。下面兩張圖描述了After觸發(fā)器和Instead Of觸發(fā)器的執(zhí)行先后順序。 左邊的圖1,描述了After觸發(fā)器執(zhí)行順序情況,我在這里通過一個簡單的例子來說明After觸發(fā)器的執(zhí)行順序,以便能加深對左圖1 After觸發(fā)器的理解。先創(chuàng)建表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觸發(fā)器及觸發(fā)器中的事務(wù),轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。