- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL Server 嵌套事务 林勇桦 什么是事务 事务要遵循ACID四个属性 Atomicity:原子性 Consistency:一致性 Isolation:隔离性 Durability:持久性 何谓嵌套事务 简单来讲 一个事务里面再嵌套一个或多个事务 复杂来讲 是一个层次结构框架,由一个顶层事务控制着各个层次的事务。顶层事务之下嵌套的事务被称为子事务。 示例1 PRINT?Trancount before transaction:??+?CAST(@@trancount?as?varchar(1))??? ?? BEGIN?TRAN?? PRINT?After?first?BEGIN?TRAN:??+?CAST(@@trancount?as?varchar(1))?? ?? --嵌套事务 BEGIN?TRAN?? PRINT?After?second?BEGIN?TRAN:??+?CAST(@@trancount?as?varchar(1))?? COMMIT?TRAN?? ?? PRINT?After?first?COMMIT?TRAN:??+?CAST(@@trancount?as?varchar(1))?? COMMIT?TRAN?? ?? PRINT?After?second?COMMIT?TRAN:??+?CAST(@@trancount?as?varchar(1)) 结果: Trancount before transaction: 0 After first BEGIN TRAN: 1 After second BEGIN TRAN: 2 After first COMMIT TRAN: 1 After second COMMIT TRAN: 0 示例1 结果说明什么 可以看到每一个BEGIN TRAN语句都会使@@TRANCOUNT增加1; 每一个COMMIT TRAN语句都会使@@TRANCOUNT减少1; 如前所述,一个值为0的@@TRANCOUNT意味着没有打开的事务; 因此,在@@TRANCOUNT值从1降到0时结束的事务发生在最外层事务提交的时候。 示例2 我们使用嵌套事务一般最关注就是外事务和内事务之间的事务提交和回滚 Consistency:一致性 Isolation:隔离性 回滚最外面事务,对内部事务有什么影响 CREATE DATABASE test USE [test] --?创建表? CREATE?TABLE?TestTrans(Cola?INT?PRIMARY?KEY,?? ???????????????Colb?varchar(20)?NOT?NULL);?? --?外部事务?? BEGIN?TRANSACTION?OutOfProc;?? --内部事务?? ??? BEGIN?TRANSACTION?InProc?? ????? INSERT?INTO?TestTrans?VALUES?(1,aaaa);?? ??? COMMIT?TRANSACTION?InProc;?? ?????? --回滚外部事务,也会回滚内部事务?? ROLLBACK?TRANSACTION?OutOfProc;?? ?? --无数据 SELECT?*?FROM?TestTrans;?? --drop?table?TestTrans?? 嵌套事务的回滚 上面示例说明了什么 结果:没有数据。 无论数据是否提交,只要最外层回滚了就会导致所有内部嵌套事务回滚。 没有隔离性,最外层事务回滚内部事务也要跟着回滚 示例3 --?创建临时表?? CREATE?TABLE?TestTrans(Cola?INT?PRIMARY?KEY,?Colb?VARCHAR(20)?NOT?NULL);?? /*?外部事务?*/?? BEGIN?TRANSACTION?OutOfProc;?? --内部事务1?? ??? BEGIN?TRANSACTION?InProc1?? ????? INSERT?INTO?TestTrans?VALUES?(1,aaaa);?? ??? ROLLBACK?TRANSACTION?InProc1;?? ?????? ???? --内部事务2?? ???? BEGIN?TRANSACTION?InProc2?? ?????? INSERT?INTO?TestTrans?VALUES?(2,bbbb);?? ???? COMMIT?TRANSACTION?InProc2;?? ?????? /*?提交外部事务?*/?
有哪些信誉好的足球投注网站
文档评论(0)