事务触发器.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
事务触发器

10.24事务(Transaction)和触发器(trigger) 事务(Transaction): SQL Server 的事务是SQL Server提供的一种高级约束机制,用于强制数据完整性的 事务可以定义更为复杂的约束;可以包含复杂的SQL Server语句,通常用于在多表之间执行特殊的业务规则约束的 事务是作为一个不可分割的逻辑单元执行的一组操作命令【一系列数据库操作】,这些命令作为一个整体一起向系统提交,要么都执行,要么都不执行【撤销/回滚】 转账过程就是一个事务 它需要两条Update语句来完成,这两条语句是一个人整体 如果其中任一条出现错误,则整个转账业务也应取消 两个账户中的余额应恢复到原来的数据 从而确保转账前和转账后的余额不变 事务的特性: 事务必须具备以下四个特性,简称ACID特性: 原子性(Atomicity):事务的各步操作是不可分的(原子的),事务是一个完整的操作,要么都执行,要么都不执行 一致性(Consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态,当事务完成时,数据必须处于一致状态 隔离性(Isolation):事务必须是独立的,它不应以任何方式依赖于或影响其他事务,对数据进行修改的所有并发事务是彼此隔离的 持续性(Durability)(永久性Permanence):一个事务一旦提交,他对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对其有任何影响 为什么使用事务 事务可以实现特殊业务规则约束 可以把你认为关系密切的一组操作命令【一系列数据库操作】,作为一个不可分割的逻辑单元执行,这些命令作为一个整体一起向系统提交,要么都执行、要么都不执行【撤销/回滚】 事务的典型的应用就是银行账户问题 银行转账业务分析: 例如:假定资金从张三的账户转到李四的账户 要求: 张三账户转出的资金必须和李四账户增加的资金相等 张三账户的资金转出,然后李四账户的资金必须增加 张三账户的自今年没有转出,李四账户的而资金不能增加 如果用T-sql语言模拟银行转账 银行转账的本质就是两个SQL语句【update语句】 事务的分类 自动提交事务:是SQL Server的默认模式,每条单独的T-sql语句都是一个事务,如果成功执行,则自动提交;如果错误,则自动回滚,不需要显示的写出事务的开始和结束的标志 显示事务【用户定义的事务】:用begin tran[saction] 明确指定事务的开始,以commit 或rollback语句显示结束,这是最常用的事务类型 隐式事务:用set implicit transactions on 将隐式事务模式设置为打开,在前一个事务完成时新事务隐式启动,但每个事务仍以commit或rollback语句显示完成 --显示事务: Begin tran Update students Set name=’cle’ Where id =1 --rollback tran Commit tran --隐式事务 Create table q (q1 int primary key ,q2 nchar(3)) Set implicit_transactions on Insert into q values(1,’aa’) Insert into q values(2,’bb’) Commit transaction Insert into q values(3,’cc’) Select * from q Commit transaction Set implicit_transactions off 创建事务: T-sql定义事务的语句: 开始事务:begin tran[saction] 提交事务:commit tran[saction] 一旦失误提交或回滚,则事务结束 回滚事务:rollback tran[saction] 判断某条语句执行是否出错: 使用全局变量@@error 如果该函数返回的是0说明执行成功 1.@@error只能判断当前(仅挨着该函数的上一条语句)一条SQL语句执行是否有错 2.为了判断事务中所有T-sql语句是否有错,我们需要对错误进行累计 如:set @errorSum=@errorSum+@@error 使用事务建议: 事务应尽可能短,并避免嵌套事务 在 银行转账业务 ---存储过程 create proc BankTranMoney @tranMoney numeri

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档