2.SQL Server DML触发器之COMMIT和ROLLBACK TRANSACTION

本文摘自《锋利的SQL》:http://item.jd.com/10380652.html

14.1.2 COMMIT和ROLLBACK TRANSACTION
当执行能够激发触发器操作的语句时,触发器中的操作也将包含在该语句的事务处理过程中。即使在SQL Server的自动事务处理模式下,也是如此。在自动事务处理模式下,当语句遇到错误时,会有隐含的BEGIN TRANSACTION语句来回滚该语句所影响的修改。但是,这个回滚操作对批处理中的其它语句没有影响,不会回滚前面操作正常的语句。因为当语句完成时,该事务要么提交,要么回滚,事务处理已经结束。但是,当该语句激发触发器时,这个隐含事务将一直有效,直至触发器操作完成。因此,这也就给予了在触发器中回滚该语句操作的机会。需要注意的是,这个回滚操作也会终止批中对该语句后面语句的执行。
例如,下面的示例为DetailTable表的INSERT和UPDATE操作定义了触发器,当向表中插入新行或更新行时,要求ProductID、ProductCount和Price列的值不能为0,否则将执行ROLLBACK TRANSACTION进行回滚。
USE AdventureWorks;
GO


-- 创建表
CREATE TABLE DetailTable
(OrderID int, ProductID int, Product

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
SQL Server 是一种关系型数据库管理系统,它不仅提供了高效的数据存储和读取功能,也提供了丰富的 SQL 语法来方便操作和管理数据。SQL 语法主要包括四个方面:数据查询语言(DQL)、数据操作语言(DML)、数据定义语言(DDL)和事务控制语言(TCL)。 数据查询语言(DQL)主要用于从数据库查询和检索数据,包括 SELECT、WHERE、FROM 和 JOIN 等语句。其,SELECT 语句是最常用的语句,可以用来选择并返回数据库符合条件的数据。WHERE 子句可以用来限制查询的结果,比如查询某个特定的值、范围、模式或者空值。FROM 子句则指定了要查询的数据表和视图。JOIN 子句则用于联结多个数据表,使得查询可以涉及到多个表的数据。 数据操作语言(DML)主要用于对数据库的数据进行增加、修改和删除操作,包括 INSERT、UPDATE 和 DELETE 语句。其,INSERT 语句用于将新的记录插入到某个数据表;UPDATE 语句用于对某个数据表的已有记录进行修改;DELETE 语句则用于删除某个数据表的记录。 数据定义语言(DDL)主要用于对数据库的结构进行定义和修改,包括 CREATE、ALTER 和 DROP 语句。其,CREATE 语句用于创建新的数据表、视图、索引、存储过程和触发器等数据库对象;ALTER 语句用于修改数据库对象的结构;DROP 语句则用于删除数据库对象。 事务控制语言(TCL)主要用于控制数据库事务以及进行回滚和提交操作,包括 BEGIN TRANSACTIONCOMMITROLLBACK 语句。其,BEGIN TRANSACTION 语句用于启动一个新的事务COMMIT 语句用于提交一个事务ROLLBACK 语句则用于撤销一个事务操作。 最后,SQL 语法不仅可以方便的对数据库进行操作和管理,也可以对数据库安全性进行控制,例如 GRANT 和 REVOKE 语句,它们允许数据库管理员授权不同的用户访问数据库,并在需要的时候取消或修改这些访问权限。因此,对 SQL 语法的深入了解是数据库管理人员必须要具备的能力之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值