T-SQL 存储过程中使用事务的几种写法(摘抄)

本文介绍了在T-SQL中如何通过SET XACT_ABORT、@@Error全局变量及TRY...CATCH结构来实现SQL事务管理和错误处理。SET XACT_ABORT用于设置事务回滚策略,@@Error用于检查上一条语句是否出错,TRY...CATCH则提供了一种更简洁的方式来捕获并处理异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.

    SET XACT_ABORT ON
         begin tran
              delete from TOP_MultiPage where 

              delete from TOP_MultiPageConfig where 
        commit


2.

     在T-SQL中我们可以借助系统全局变量@@Error要得到上一条语句的异常,正常情况下它是返回0的。

 BEGIN TRANSACTION T1
          insert into [teach_info]([teach_id],[login_name],[login_pwd],[real_name],[state]) values(@id,@login_name,@pwd,@name,@state);

          if @@Error<>0 

           begin

                  ROLLBACK TRANSACTION T1;

                   return;

           end
        delete from [tmpUser] where [login_name]=@login_name;

       if @@Error<>0

        begin

           ROLLBACK TRANSACTION T1;

           return;    --别忘了返回语句,不然下面语句会继续执行,使存储过程报错

        end
     COMMIT TRANSACTION T1


 

3.

我们看到这样两条语句还可以,但是语句多了要使用多条判断语句,好像有点多余了,SQL2005解决了这个问题,它的try...catch 块可以一次捕获到其中的异常,并在catch块中执行回滚。

BEGIN TRANSACTION T1 

BEGIN TRY
    
      insert into [teach_info]([teach_id],[login_name],[login_pwd],[real_name],[state]) values(@id,@login_name,@pwd,@name,@state);

       delete from [tmpUser] where [login_name]=@login_name;

      COMMIT TRANSACTION T1

END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION T1;
END CATCH

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值