zoukankan      html  css  js  c++  java
  • 事务中SET XACT_ABORT各种用法

    SET XACT_ABORT

        一提到事务,也许,你的第一反应就是,要么全部执行,要么全部不执行,然而事实.............可以不是这样滴!

    测试代码

    CREATE TABLE TEST(
    ID INT NOT NULL PRIMARY KEY IDENTITY(1,1),
    VAL VARCHAR(2)
    )

    1.事务终止并全部回滚

    SET XACT_ABORT ON
    BEGIN TRAN
       INSERT INTO TEST VALUES('11')
       INSERT INTO TEST VALUES('22')
       INSERT INTO TEST VALUES('3333') --超出字符长度
       INSERT INTO TEST VALUES('44')
    COMMIT TRAN
    
    SELECT * FROM TEST
    --结果:没有值

    2.只回滚错误行,语句还继续执行

    SET XACT_ABORT OFF
    BEGIN TRAN
       INSERT INTO TEST VALUES('11')
       INSERT INTO TEST VALUES('22')
       INSERT INTO TEST VALUES('3333') --超出字符长度
       INSERT INTO TEST VALUES('44')
    COMMIT TRAN
    
    SELECT * FROM TEST
    --结果:
    /*
    ID    VAL
    4    11
    5    22
    7    44
    */

    3.事务在错误行终止,错误行回滚,错误行之前的不回滚

     每个语句作为一个事务,事务在错误行终止,错误行回滚,错误行之前的不回滚.(BENGIN END)

    DELETE FROM TEST
    SET XACT_ABORT ON
    BEGIN 
       INSERT INTO TEST VALUES('11')
       INSERT INTO TEST VALUES('22')
       INSERT INTO TEST VALUES('3333') --超出字符长度
       INSERT INTO TEST VALUES('44')
    END
    
    SELECT * FROM TEST
    --结果:
    /*
    ID    VAL
    8    11
    9    22
    */
  • 相关阅读:
    WPF 快捷键读写txt
    win10 UWP GET Post
    win10 UWP GET Post
    win10 UWP Hmac
    win10 UWP Hmac
    win10 UWP MessageDialog 和 ContentDialog
    MySQL 触发器-更新字段时,status列会加一
    [SDOI2018]旧试题
    win10 UWP MessageDialog 和 ContentDialog
    win10 UWP RSS阅读器
  • 原文地址:https://www.cnblogs.com/mc67/p/4823514.html
Copyright © 2011-2022 走看看