MsSQL   发布时间:2022-05-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了SQL Server触发器及触发器中的事务学习大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如果你有对触发器和事务的概念,有些了解,这篇文章,对你来说会是很简单,或能让你更进一步的了解触发器里面的一些故事,和触发器中事务个故事。在这边文章里面,我不会从触发器和事务的概念去讲述,而是从常见的两种触发器类型(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触发器的执行先后顺序。

@H_419_10@

SQL Server触发器及触发器中的事务学习


@H_419_10@

SQL Server触发器及触发器中的事务学习

图1 图2

左边的图1,描述了After触发器执行顺序情况,我在这里通过一个简单的例子来说明After触发器的执行顺序,以便能加深对左图1 After触发器的理解。

先创建表Contact

cursOR: text; DIRECTION: ltr; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BottOM: silver 1px solid; FONT-FAMILY: 'Courier New',courier,monospace; BACKGROUND-COLOR: #f4f4f4; TEXT-ALIGN: left">
BACKGROUND-COLOR: #f4f4f4; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none">
BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none"> tempdb
BACKGROUND-COLOR: #f4f4f4; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none">
BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none"> object_id()    
BACKGROUND-COLOR: #f4f4f4; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none">   Contact
BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none">
BACKGROUND-COLOR: #f4f4f4; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none">  Contact
BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none">(
BACKGROUND-COLOR: #f4f4f4; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none"> ID    (1,1),
BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none"> name nvarchar(50),monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none"> Sex (2) (Sex (N,N)) ()
BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none">)
BACKGROUND-COLOR: #f4f4f4; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none">Go

再创建After触发器tr_Contact

cursOR: text; DIRECTION: ltr; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BottOM: silver 1px solid; FONT-FAMILY: 'Courier New',monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none"> ( 1 sys.triggers name=)
BACKGROUND-COLOR: #f4f4f4; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none">   tr_Contact 
BACKGROUND-COLOR: #f4f4f4; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none">  tr_Contact  Contact  Insert
BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none">
BACKGROUND-COLOR: #f4f4f4; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none"> Name,Sex  Inserted 显示Inserted表的内容,用来判断触发器执行的先后顺序*/
BACKGROUND-COLOR: white; TEXT-ALIGN: left; BORDER-BottOM-STYLE: none">

大佬总结

以上是大佬教程为你收集整理的SQL Server触发器及触发器中的事务学习全部内容,希望文章能够帮你解决SQL Server触发器及触发器中的事务学习所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:首先