- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌套事务的回滚与提交[精选]
嵌套事务的回滚
一、嵌套事务和事务保存点的错误处理
对于嵌套事务。1.外部起事务,内部起事务,内外都有Try Catch内部出错:如果内部事务出错,内部和外部事物全部回滚,外部回滚之前的操作全部不存在,但是之后的操作继续执行。外部出错:如果外部事物出错,内部和外部事物全部回滚,外部回滚之前的操作全部不存在,但是之后的操作继续执行。注:如果内部的事务不起事务名称,内部如果出错,将会回滚掉会话中的全部事务,而且报异常。
2.外部起事务,内部起事务,内部没有Try Catch内部出错:如果内部事务出错,内部和外部事物全部回滚,外部回滚之前的操作全部不存在,但是之后的操作继续执行。外部出错:如果内部事务出错,内部和外部事物全部回滚,外部回滚之前的操作全部不存在,但是之后的操作继续执行。
3.外部起事务,内部不起事务,但有Try Catch。内部出错:外部事物正常提交,外部事物不会进入ROLLBACK,内部出错之后的记录也会正常执行。内部操作中,Try部分在错误出现之前的操作正常,Try部分在操作之后的操作不执行,然后进入Catch块中执行操作。外部出错:内部和外部事物全部回滚,外部回滚之前的操作全部不存在,但是之后的操作继续执行。
4.外部起事务,内部不起事务,但没有Try Catch.内部出错:如果内部事务出错,内部和外部事物全部回滚,外部回滚之前的操作全部不存在,但是之后的操作继续执行。外部出错:如果内部事务出错,内部和外部事物全部回滚,外部回滚之前的操作全部不存在,但是之后的操作继续执行。
5.外部不起事务,内部起事务,但有Try Catch.内部出错:外部操作被正常执行,内部ROLLBACK操作前全部回滚,之后的操作正常执行。外部出错:出错操作之前的操作不会回滚,出错之后的操作不执行,跳入Catch块中,内部事务不会回滚。
6.外部不起事务,内部起事务,但没有Try Catch.内部出错:外部操作被正常执行,内部ROLLBACK操作前全部回滚。由于没有catch块,所以外部操作全部执行。外部出错:内部事务正常提交,外部只有当条记录失败,其他操作正常执行,但是有严重错误报出来。对于事务保存点事务保存点只有SAVE和ROLLBACK操作,当外部调用内部保存点,内部出现问题不影响外部事务,外部操作正常执行。当外部操作出现问题时,内部所有操作都回滚掉。
如:外部起事务,内部起保存点,内外都有Try Catch内部出错:外部操作正常,不进入Catch,内部事务回滚到保存点,之后的继续执行。外部出错:如果外部事物在保存点之前出现异常,那么外部和内部所有操作回滚。如果外部事物在保存点之前出现异常,由于保存点已经提交了事务,导致外部rollback找不到对应的事务点。
事务的嵌套
PRINT Trancount before transaction: + CAST(@@TRANCOUNT as char(1))
BEGIN TRAN
PRINT After first BEGIN TRAN: + CAST(@@TRANCOUNT as char(1))
BEGIN TRAN
PRINT After second BEGIN TRAN: + CAST(@@TRANCOUNT as char(1))
COMMIT TRAN
PRINT After first COMMIT TRAN: + CAST(@@TRANCOUNT as char(1))
COMMIT TRAN
PRINT After second COMMIT TRAN: + CAST(@@TRANCOUNT as char(1))
在结果中,可以看到每一个BEGIN TRAN 语句都会使@@TRANCOUNT增加1并且每一个COMMIT TRAN语句都会使其减少1。如前所述,一个值为0的@@TRANCOUNT意味着没有打开的事务。因此,在@@TRANCOUNT值从1降到0时结束的事务发生在外层事务提交的时候。因此,每一个内部事务都需要提交。由于事务起始于第一个BEGIN TRAN并结束于最后一个COMMIT TRAN,因此最外层的事务决定了是否完全提交内部的事务。如果最外层的事务没有被提交,其中嵌套的事务也不会被提交。
键入并执行以下批来检验事务回滚时所发生的情况:
BEGIN TRAN
PRINT After 1st BEGIN TRAN: + CAST(@@TRANCOUNT as char(1))
BEGIN TRAN
PRINT After 2nd BEGIN TRAN: + CAST(@@TRANCOUNT as char(1))
BEGIN TRAN
PRINT After 3rd BEGIN TRAN: + CAST
您可能关注的文档
- 岘港[精选].doc
- 岩土工程勘察参考资料.doc
- 岗位观察表参照.doc
- 岩土工程勘察报告参考资料.doc
- 岩土工程勘察收费标准2002[精选].doc
- 岩土钻凿技术1参考资料.doc
- 岩土工程师报考条件及新旧专业对照表[精选].doc
- 岩土等级分类[精选].doc
- 岛津液相色谱仪使用注意事项参照.doc
- 岩土爆破设计分析(采矿专业)[精选].ppt
- 2024年江西省寻乌县九上数学开学复习检测模拟试题【含答案】.doc
- 2024年江西省省宜春市袁州区数学九上开学学业水平测试模拟试题【含答案】.doc
- 《GB/T 44275.2-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第2部分:术语》.pdf
- 中国国家标准 GB/T 44275.2-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第2部分:术语.pdf
- GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构.pdf
- 《GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构》.pdf
- 中国国家标准 GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构.pdf
- GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南.pdf
- 中国国家标准 GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南.pdf
- 《GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南》.pdf
文档评论(0)