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