打赏

sqlserver2008事物处理

声明事物:begin tran

回滚事物:ROLLBACK TRAN

提交事物:commit tran(不写会隐式提交)

判断是否发生异常:

结束前:

IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN

RETURN
END

 

2019 02 12

之前看别人博客说是try catch sqlserver2008版本没有,2016版本才有,今天碰到一个问题解决不了了,想到了try catch,试了一下2008版本也能用。语法如下

begin try

--your code

end try

begin catch

--your code

end catch

 

20200506:

合写@参考文章

BEGIN TRY
    BEGIN TRAN
    
    --YOUR CODE
    
    IF @@ERROR <> 0 BEGIN
        ROLLBACK TRAN
        RETURN
    END ELSE BEGIN 
        COMMIT TRAN
    END
END TRY
BEGIN CATCH
    IF @@TRANCOUNT > 0 BEGIN
        ROLLBACK TRAN;
    END
    
    --YOUR CODE
    
END CATCH

@@TranCount说明@参考文章

在SqlServer里,嵌套事务的层次是由@@TranCount全局变量反映出来的。

每一次Begin Transaction都会引起@@TranCount加1。而每一次Commit Transaction都会使@@TranCount减1,而RollBack Transaction会回滚所有的嵌套事务包括已经提交的事务和未提交的事务,而使@@TranCount置0

 

posted @ 2018-04-18 10:13  每天都要学一点  阅读(220)  评论(0编辑  收藏  举报