zoukankan      html  css  js  c++  java
  • SET XACT_ABORT各种用法及显示结果

    默认行为

      默认为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)
    */
    版权

    作者:Artwl

    出处:http://artwl.cnblogs.com

    本文首发博客园,版权归作者跟博客园共有。转载必须保留本段声明,并在页面显著位置给出本文链接,否则保留追究法律责任的权利。

  • 相关阅读:
    数据结构:数组、链表、栈、队列的理解
    JVM学习记录-JVM的内存结构管理和运行时数据区理解
    线程池ThreadPoolExecutor的一种扩展办法
    四级地址插件升级改造(京东商城地址选择插件)city-picker
    java8在Collection中新增加的方法removeIf
    使用lambda编程之延迟执行
    JSP的内置对象以及作用域。
    Netty 异步的、事件驱动的网络应用程序框架和工具
    Zookeeper 服务注册和发现
    Jetty 发布web服务
  • 原文地址:https://www.cnblogs.com/artwl/p/2320876.html
Copyright © 2011-2022 走看看