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

来源:互联网 发布:制作漫画人物软件 编辑:程序博客网 时间:2024/06/05 09:56

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 T1END TRYBEGIN CATCH    ROLLBACK TRANSACTION T1;END CATCH