zoukankan      html  css  js  c++  java
  • 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
    

     结果:

      

    --没有错误自动提交

      

    --有错误自动回滚

      

  • 相关阅读:
    web知识共享网站
    Javascript模拟多线程
    让mssql查询的参数大小写区分
    asp.net导出excel文件方法之一
    对生活迷茫时,可以看的小说..
    解决SWFUpload在Chrome、Firefox浏览器下session找不到的问题
    fckeditor在ie9无法上传图片和弹出浮层内容不显示的解决方法
    一个javascript文件上传组件.
    css属性之媒体(Media)类型
    前端问题汇总
  • 原文地址:https://www.cnblogs.com/feiquan/p/8667440.html
Copyright © 2011-2022 走看看