zoukankan      html  css  js  c++  java
  • s​e​t​ ​x​a​c​t​_​a​b​o​r​t ​用​法

    默认行为

      默认为SET XACT_ABORT OFF,没有事务行为。

    SET XACT_ABORT ON

      SET XACT_ABORT ON分为两种:

      1、总体作为一个事务,整体提交或整体回滚,格式为:

    SET XACT_ABORT ON
    BEGIN TRAN
    --要执行的语句
    COMMIT TRAN
    GO

      2、每个语句作为一个事务,事务在错误行终止,错误行回滚,错误行之前的不回滚,格式为:

    SET XACT_ABORT ON
    BEGIN
    --要执行的语句
    END
    GO

    测试

    复制代码
    --创建测试表
    use MyDB
    CREATE TABLE student
    (
    stuid int NOT NULL PRIMARY KEY,
    stuname varchar(50)
    )
    CREATE TABLE score
    (
    stuid int NOT NULL REFERENCES student(stuid),
    score int
    )
    GO

    --插入测试数据
    INSERT INTO student VALUES (101,'zhangsan')
    INSERT INTO student VALUES (102,'wangwu')
    INSERT INTO student VALUES (103,'lishi')
    INSERT INTO student VALUES (104,'maliu')
    GO

    ---------------测试事务提交------------------
    use MyDB
    --只回滚错误行,语句还继续执行
    SET XACT_ABORT OFF
    BEGIN TRAN
    INSERT INTO score VALUES (101,90)
    INSERT INTO score VALUES (102,78)
    INSERT INTO score VALUES (107,76) /* Foreign Key Error */
    INSERT INTO score VALUES (103,81)
    INSERT INTO score VALUES (104,65)
    COMMIT TRAN
    GO
    /*
    stuid score
    ----------- -----------
    101 90
    102 78
    103 81
    104 65

    (4 row(s) affected)
    */

    use MyDB
    --事务终止并全部回滚
    SET XACT_ABORT ON
    BEGIN TRAN
    INSERT INTO score VALUES (101,90)
    INSERT INTO score VALUES (102,78)
    INSERT INTO score VALUES (107,76) /* Foreign Key Error */
    INSERT INTO score VALUES (103,81)
    INSERT INTO score VALUES (104,65)
    COMMIT TRAN
    GO
    /*
    stuid score
    ----------- -----------
    (0 row(s) affected)
    */

    use MyDB
    --事务在错误行终止,错误行回滚,错误行之前的不回滚
    SET XACT_ABORT ON
    BEGIN
    INSERT INTO score VALUES (101,90)
    INSERT INTO score VALUES (102,78)
    INSERT INTO score VALUES (107,76) /* Foreign Key Error */
    INSERT INTO score VALUES (103,81)
    INSERT INTO score VALUES (104,65)
    END
    GO
    /*
    stuid score
    ----------- -----------
    101 90
    102 78
    (2 row(s) affected)
    */
  • 相关阅读:
    HDU 4472 Count DP题
    HDU 1878 欧拉回路 图论
    CSUST 1503 ZZ买衣服
    HDU 2085 核反应堆
    HDU 1029 Ignatius and the Princess IV
    UVa 11462 Age Sort
    UVa 11384
    UVa 11210
    LA 3401
    解决学一会儿累了的问题
  • 原文地址:https://www.cnblogs.com/hjtdlx/p/3695532.html
Copyright © 2011-2022 走看看