[转]SQL事务回滚的问题及其解决的方法

原文:http://shirlly.javaeye.com/blog/370973

Begin Transaction:开始一个事务;
Commit Transaction:提交事务;
Rollback Transaction:回滚事务。

其中Commit Transaction 与Rollback Transaction 都必须有对应的Begin Transaction 才能正确被执行。

如:

Begin Tran
……
Rollback Tran
Commit Tran

以上事务只执行了回滚操作。执行Commit Tran系统会返回3902错误,即@@Error=3902,COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。

Begin Tran
……
Commit Tran
Rollback Tran

以上事务员执行了提交事务操作。执行Rollback Tran系统会返回3903错误,即@@Error=3903,ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。

实例:使用@@Error返回值来控制回滚

设有表a,有字段num (int),name (varchar(20));表b,有字段num (int),Add (varchar(50))。以下是一个存储过程,使用了@@Error的返回值来控件事件回滚:

  1. CREATE PROCEDURE [dbo].[TranTest]
  2. @num int,@name varchar(20),@Add varchar(20)
  3. AS
  4. DECLARE @ErrorA int,@ErrorB int
  5. begin transaction aa
  6. insert into a values(@num,@name)
  7. Set @ErrorA = @@error
  8. insert into b values(@num,@Add)
  9. Set @ErrorB = @@error
  10. if @ErrorA>0 or @ErrorB>0
  11. begin
  12. Rollback transaction aa
  13. end
  14. else
  15. commit transaction aa
  16. GO

转载于:https://www.cnblogs.com/sgivee/archive/2010/07/04/1771049.html

[转]SQL事务回滚的问题及其解决的方法相关推荐

  1. SQL事务回滚的两种方式

    1.XACT_ABORT 1)set XACT_ABORT off时,回滚产生错误的Transact-SQL语句,而事务将继续进行处理,(注:错误严重或者语法错误时可能回滚整个事务) 2) set X ...

  2. mysql 事务回滚语句_数据库事务回滚语句-sql事务回滚语句是-用于事务回滚的sql语句...

    sql 回滚语句 这种情况的数据恢复只能利用事务日志的备份来进行,所以如果你的SQL没有进行相应的全库备份 或不能备份日志(truncate log on checkpoint选项为1),那幺就无法进 ...

  3. begintrans返回值_SQL事务回滚 ADO BeginTrans, CommitTran 以及 RollbackTrans 方法

    定义和用法 这三个方法与 Connection 对象使用,来保存或取消对数据源所做的更改. 注释:并非所有提供者都支持事务. 注释:BeginTrans.CommitTrans 和 RollbackT ...

  4. 20180928 SQL SERVER 事务回滚

    begin tran:设置起点 commit tran:使事务成为数据库中永久的.不可逆转的一部分 rollback tran:本质上说想要忘记它曾经发生过 save tran:创建一个特定标记,只允 ...

  5. 事务回滚什么意思 try_分布式事务 TCC-Transaction 源码分析——事务恢复

    1. 概述 本文分享 TCC 恢复.主要涉及如下二个 package 路径下的类: org.mengyun.tcctransaction.recover RecoverConfig,事务恢复配置接口 ...

  6. SQL Server事务回滚对自增键的影响

    SQL Server事务回滚时是删除原先插入导致的自增值,也就是回滚之前你你插入一条数据导致自增键加1,回滚之后还是加1的状态 --如果获取当前操作最后插入的identity列的值: select @ ...

  7. 哪些异常是RuntimeException?Sql异常属于RuntimeException吗?Spring下SQL异常事务回滚

    哪些异常是RuntimeException?Sql异常属于RuntimeException吗?Spring下SQL异常事务回滚 参考文章: (1)哪些异常是RuntimeException?Sql异常 ...

  8. sql server 事务_如何使用显式SQL Server事务回滚

    sql server 事务 In this article, we will explore the process of rollback an explicit SQL Server transa ...

  9. springboot事务回滚源码_Spring Boot中的事务是如何实现的

    1. 概述 一直在用SpringBoot中的@Transactional来做事务管理,但是很少想过SpringBoot是如何实现事务管理的,今天从源码入手,看看@Transactional是如何实现事 ...

最新文章

  1. 编译安装samba4.89遇到的错误
  2. Visual Studio 2010 模板缺失
  3. rssi室内定位算法原理_智慧定位系统之蓝牙网关在室内定位技术的原理浅析
  4. 使用akka构建高并发程序_如何使用Akka Cluster创建简单的应用程序
  5. jQuery / zepto ajax 全局默认设置
  6. 代码重构之道,重构即重生,让你的代码起死回生
  7. opencv-Getting Started with Videos
  8. numpy 辨异 (五)—— numpy.ravel() vs numpy.flatten()
  9. win7系统数据库服务器,win7数据库 服务器
  10. (转)RemapKey等:小巧实用的键盘映射工具
  11. springboot集成ureport2
  12. 选拔人才要关注的七个方面
  13. 2018年第九届蓝桥杯JAVA A组国赛 —— 第二题:阅兵方阵(暴力)
  14. Java进阶-面向对象
  15. Ubuntu下安装LXDE+XRDP实现远程桌面访问(最轻量级桌面)
  16. iOS/MAC 数据压缩与解压缩及常用算法 LZMA、ZLIB
  17. 二叉树的先中后序递归和非递归遍历(数据结构作业)
  18. 特斯拉充电异常甩锅国家电网,被“打脸”后致歉
  19. 用C语言编写一个电话簿管理系统
  20. Linux之IFS间隔符、C编程、gdb调试

热门文章

  1. 01-01 Linux系统与shell环境准备
  2. lia人是什么意思_老话说“人穷别说话,位卑莫劝人”,什么意思?有何道理?...
  3. 电脑字体在哪个文件夹_壹心奇妙体下载 壹心奇妙体 字体下载
  4. 取枚举的参数c语言,求解:如何获得enum类型中枚举值的数量
  5. Java与Web前端发展前景及薪资对比
  6. python int函数和二进制、八进制、十进制转换
  7. 计算机视觉的监控系统研究现状,基于计算机视觉的监控系统的研究
  8. 接口规范 11. 串流相关接口
  9. 计算机中逻辑运算用什么表示逻辑真,计算机逻辑运算和逻辑部.ppt
  10. Java实现Redis的订阅发布功能,亲测可以