• SQL 中事务的分类


    先讲下事务执行流程:

     BEGIN和COMMIT

    PRINT @@TRANCOUNT --@@TRANCOUNT统计事务数量
    BEGIN TRAN PRINT @@TRANCOUNT BEGIN TRAN PRINT @@TRANCOUNT COMMIT TRAN --只提交一个事务 PRINT @@TRANCOUNT COMMIT TRAN PRINT @@TRANCOUNT

    结果:

    ROLLBACK

    PRINT @@TRANCOUNT
    BEGIN TRAN
        PRINT @@TRANCOUNT
        BEGIN TRAN
            PRINT @@TRANCOUNT
    ROLLBACK TRAN --回滚所有事务
    PRINT @@TRANCOUNT

    结果:

      由上可知BEGIN TRAN 开始事务,使事务数量加一

          COMMIT TRAN 使事务减一,提交最新开辟的事务

          ROLLBACK 使事务数量直接减为0,也就是回滚

    事务分类:

      1.显示事务

      2.隐式事务模式

      3.自动提交事务

    --显示事务

    SET NOCOUNT ON
    SET IMPLICIT_TRANSACTIONS OFF --设置为显示事务模式,也就是自动提交模式
    PRINT '显示事务开始前:'+CAST(@@TRANCOUNT AS varchar(10))
    GO
    IF EXISTS(SELECT *FROM sys.tables WHERE name='Table1')
    DROP TABLE Table1
    
    CREATE TABLE Table1
    (
    col1 int 
    )
    GO
    INSERT INTO Table1 VALUES(1)
    PRINT '插入数据时事务数:'+CAST(@@TRANCOUNT AS varchar(10))
    
    BEGIN TRAN
    PRINT '开始事务时的事务数:'+CAST(@@TRANCOUNT AS varchar(10))
    COMMIT TRAN
    GO
    PRINT '提交事务后的事务数:'+ CAST(@@TRANCOUNT AS varchar(10))
    GO

    结果:

      


    --隐式事务模式

    SET IMPLICIT_TRANSACTIONS ON --打开隐式事务模式
    INSERT INTO Table1 VALUES(2)
    INSERT INTO Table1 VALUES(2)
    PRINT '插入数据时事务数:'+CAST(@@TRANCOUNT AS varchar(10))
    COMMIT TRAN 
    --如果不显示提交事务,那么如果下一条语句是(INSERT,DELECT,UPDATE,CREATE,TRUNCAST TABLE ,所有DROP,ALTER TABLE,GRINT,REVOK,SELECT)就会自动新建一个事务
    
    PRINT '提交隐式事务后的事务数:'+CAST(@@TRANCOUNT AS varchar(10))
    GO

    结果:

      

    --自动提交事务

    --当设置IMPLICIY_TRANSACTIONS OFF 就恢复为自动提交模式
    SET IMPLICIT_TRANSACTIONS OFF
    GO
    INSERT INTO Table1 VALUES(3) --没有错误自动提交
    PRINT @@TRANCOUNT
    
    INSERT INTO Table1 VALUES(3,3) --有错误自动回滚
    PRINT @@TRANCOUNT
    

     结果:

      

    --没有错误自动提交

      

    --有错误自动回滚

      

  • 相关阅读:
    CF1070F Debate
    P3502 [POI2010]CHO-Hamsters
    CF1421A XORwice
    P2073 送花
    树链剖分边权转化为点权
    球——数学分析,模型构建
    数位dp的模版
    不要62
    智慧题——规律题
    CF551C GukiZ hates Boxes——模拟加二分
  • 原文地址:https://www.cnblogs.com/feiquan/p/8667440.html
Copyright © 2020-2023  润新知