SQL Server的事务和错误处理

本文详细介绍了SQL Server中的事务处理,包括开始事务、嵌套事务、保存点的使用,以及如何进行错误处理。强调了BEGIN TRAN、COMMIT、ROLLBACK在事务管理中的角色,并通过示例解释了如何在发生错误时回滚事务。此外,还探讨了SAVE TRAN用于部分回滚事务的功能,以及@@TRANCOUNT变量在跟踪事务嵌套级别的应用。
摘要由CSDN通过智能技术生成

    

事务

事务组合一系列任务为一个执行单元。每个事务以特定的任务开始,以特定的任务结束。当所有的任务成功时事务成功,当任何一个任务失败时,事务失败。所以一个事务只有两个结果:失败或成功。
用户能用下列指令组合两个以上的T-SQL语句到一个事务中:
Begin Transaction 
Rollback Transaction 
Commit Transaction 
一组指令中出现任何错误,就需要使用Rollback撤销执行。如果一个事务中的所有语句都按顺序执行成功,那么就需要把所有的改变记录到数据库中:Commit到数据库。

  1. USE pubs   
  2.   
  3. DECLARE @intErrorCode INT  
  4.   
  5. BEGIN TRAN   
  6.     UPDATE Authors   
  7.     SET Phone = '415 354-9866'  
  8.     WHERE au_id = '724-80-9391'  
  9.   
  10.     SELECT @intErrorCode = @@ERROR   
  11.     IF (@intErrorCode <> 0) GOTO PROBLEM   
  12.   
  13.     UPDATE Publishers   
  14.     SET city = 'Calcutta', country = 'India'  
  15.     WHERE pub_id = '9999'  
  16.   
  17.     SELECT @intErrorCode = @@ERROR   
  18.     IF (@intErrorCode <> 0) GOTO PROBLEM   
  19. COMMIT TRAN   
  20.   
  21. PROBLEM:   
  22. IF (@intErrorCode <> 0) BEGIN  
  23. PRINT 'Unexpected error occurred!'  
  24.     ROLLBACK TRAN   
  25. END  

在真正处理开始之前,使用BEGIN TRAN标记:下面所有的动作作为一个事务。里边包含两个update语句。如果没有出错,当执行到COMMIT TRAN所有的改变被提交到数据库,存储过程完成。如果在执行update出错,通过检测@@ERROR,跳转到PROBLEM标签,显示错误信息,回滚这期间所有的修改。
注意:确保BEGIN TRAN 和COMMIT 或 ROLLBA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值