首页 SQLServer SQL事务回滚语法的问题及其解决的方法

SQL事务回滚语法的问题及其解决的方法

作者:胡同里的砖头 围观群众:707 更新于:2013-12-19

 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的返回值来控件事件回滚:

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

  • 本文标题: SQL事务回滚语法的问题及其解决的方法
  • 文章分类:【SQLServer】
  • 非特殊说明,本文版权归【胡同里的砖头】个人博客 所有,转载请注明出处.
留言评论
站点声明:
1、本站【胡同里的砖头】个人博客,借鉴网上一些博客模板,取其各优点模块自行拼装开发,本博客开发纯属个人爱好。
2、所有笔记提供给广大用户交流使用,可转载,可复制,纯个人开发所遇问题锦集记录使用
Copyright © huzlblog.com All Rights Reserved. 备案号:苏ICP备2021056683号-8