了解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触发器的执行先后顺序。     imageimage  左边的图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触发器及触发器中的事务,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。