美文网首页
SQL-事务

SQL-事务

作者: YANG_LIVE | 来源:发表于2022-01-20 16:08 被阅读0次
    IF EXISTS ( SELECT TOP ( 1 ) * FROM #Tpmet )
        BEGIN
            BEGIN TRANSACTION;      -- 开启事务
            DECLARE @ErrorNo INT;   -- 定义变量,用于记录事务执行过程中的错误次数
            SET @ErrorNo = 0;
            BEGIN TRY
    
                /*
                业务逻辑 
                @@ERROR 是错误信息标记
                */
                
                SET @ErrorNo = @ErrorNo + @@ERROR;
                IF ( @ErrorNo > 0 )
                    BEGIN
                    --抛出自定义的异常,在最后的catch块中统一处理异常
                        RAISERROR(233333,16,3);
                    END;
            END TRY
    
            BEGIN CATCH
                SELECT  ERROR_NUMBER() errorNumber ,        --错误代码
                        ERROR_SEVERITY() errorSeverity ,    --错误严重级别,级别小于10 try catch 捕获不到
                        ERROR_STATE() errorState ,          --错误状态码
                        ERROR_PROCEDURE() errorProcedure ,  --出现错误的存储过程或触发器的名称
                        ERROR_LINE() errorLine ,            --发生错误的行号
                        ERROR_MESSAGE() errorMessage;       --错误的具体信息
    
                IF ( @@trancount > 0 )                      -- @@trancounz 系统全局变量,事务开启 @@trancount 值+1,判断事务是否开启
                    BEGIN
                        ROLLBACK TRANSACTION;               -- 回滚事务
                    END;
            END CATCH;
    
            IF ( @@trancount > 0 )
                BEGIN
                    COMMIT TRANSACTION;        -- 提交事务
                END;    
        END;
    

    相关文章

      网友评论

          本文标题:SQL-事务

          本文链接:https://www.haomeiwen.com/subject/itijhrtx.html