指定当 Transact-SQL 语句产生运行时错误时,Microsoft® SQL Server™ 是否自动回滚当前事务。

语法

SET XACT_ABORT { ON | OFF }

注释

当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。为 OFF 时,只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。编译错误(如语法错误)不受 SET XACT_ABORT 的影响。

对于大多数 OLE DB 提供程序(包括 SQL Server),隐性或显式事务中的数据修改语句必须将 XACT_ABORT 设置为 ON。唯一不需要该选项的情况是提供程序支持嵌套事务时。有关更多信息,请参见分布式查询和分布式事务。

SET XACT_ABORT 的设置是在执行或运行时设置,而不是在分析时设置。

示例

下例导致在含有其它 Transact-SQL 语句的事务中发生违反外键错误。在第一个语句集中产生错误,但其它语句均成功执行且事务成功提交。在第二个语句集中,SET XACT_ABORT 设置为 ON。这导致语句错误使批处理终止,并使事务回滚。

CREATE TABLE t1 (a int PRIMARY KEY)

CREATE TABLE t2 (a int REFERENCES t1(a))

GO

INSERT INTO t1 VALUES (1)

INSERT INTO t1 VALUES (3)

INSERT INTO t1 VALUES (4)

INSERT INTO t1 VALUES (6)

GO

SET XACT_ABORT OFF

GO

BEGIN TRAN

INSERT INTO t2 VALUES (1)

INSERT INTO t2 VALUES (2) /* Foreign key error */

INSERT INTO t2 VALUES (3)

COMMIT TRAN

GO

SET XACT_ABORT ON

GO

BEGIN TRAN

INSERT INTO t2 VALUES (4)

INSERT INTO t2 VALUES (5) /* Foreign key error */

INSERT INTO t2 VALUES (6)

COMMIT TRAN

GO

/* Select shows only keys 1 and 3 added.

Key 2 insert failed and was rolled back, but

XACT_ABORT was OFF and rest of transaction

succeeded.

Key 5 insert error with XACT_ABORT ON caused

all of the second transaction to roll back. */

SELECT *

FROM t2

GO

DROP TABLE t2

DROP TABLE t1

GO

mysql xact abort,SET XACT_ABORT的用法相关推荐

  1. mysql xact abort,为什么在xact_abort打开时,Sql Server在raiserror之后继续执行?

    如果使用try / catch块,则严重性为11-19的raiserror错误编号将导致执行跳转到catch块. 任何严重性超过16是系统错误. 为了演示下面的代码设置一个try / catch块并执 ...

  2. php+insert+into+注入,PHP+MySQL之Insert Into数据插入用法分析

    本文实例讲述了PHP+MySQL之Insert Into数据插入用法.分享给大家供大家参考.具体如下: INSERT INTO 语句用于向数据库表中插入新纪录. 向数据库表插入数据 INSERT IN ...

  3. 【转贴】mysql导入数据load data infile用法

    mysql导入数据load data infile用法 基本语法: load data [low_priority] [local] infile 'file_name txt' [replace | ...

  4. python propresql mysql_python数据库操作mysql:pymysql、sqlalchemy常见用法详解

    本文实例讲述了python数据库操作mysql:pymysql.sqlalchemy常见用法.分享给大家供大家参考,具体如下: 相关内容: 使用pymysql直接操作mysql 创建表 查看表 修改表 ...

  5. mysql+case_mysql内置函数case用法介绍

    本节内容: mysql内置函数case使用介绍 mysql对case函数的解释: 复制代码 代码示例: mysql> ? case Many help items for your reques ...

  6. MySQL查询分析器EXPLAIN或DESC用法

    MySQL查询分析器EXPLAIN或DESC用法 一.简单例子: MySQL可以通过EXPLAIN或DESC来查看并分析SQL语句的执行情况 mysql> desc one_and_two_kn ...

  7. mysql 过程if语句,mysql存储过程之if语句用法实例详解

    这篇文章主要介绍了mysql存储过程之if语句用法,结合实例形式详细分析了mysql存储过程中if语句相关原理.使用技巧与操作注意事项,需要的朋友可以参考下 本文实例讲述了mysql存储过程之if语句 ...

  8. MySQL日期和时间函数的用法及使用举例

    MySQL日期和时间函数的用法及使用举例 MySQL提供了用于处理日期和时间的相关函数.现对这些函数的功能及用法进行介绍并举例. 创建数据表emp并输入数据: create table emp(emp ...

  9. Mysql——索引底层数据结构与Explain用法

    Mysql--索引底层数据结构与Explain用法 一.索引底层数据结构 1.Mysql不同引擎对应的数据结构 2.B+Tree数据结构 2.1. 二叉树 (Binary Search Trees) ...

最新文章

  1. .Net面试题(1)
  2. byte数组转字符串_VS2012 C# 16进制数与字符串的互换
  3. 面向过程和面向对象的区别
  4. PlantUML权威教程-时序图
  5. 【机器学习】推荐一个好用的开源automl工具
  6. 2018辽宁计算机学校高考,2018辽宁高考分数线
  7. 湖南女子学院 计算机,2019湖南女子学院专业排名
  8. 一起来玩树莓派--解决树莓派启动时屏幕不亮的问题
  9. 拼多多:扶贫项目正连续遭受网络舆情涉黑团伙攻击
  10. 阿姆达尔定律(Amdahl's law)
  11. 在linux下将当前目录文件全部小写含目录名
  12. java数据结构银行叫号_数据结构C语言版利用队列结构实现银行叫号系统要..._结构工程师_帮考网...
  13. spring cloud day(6) gateway网关
  14. 腾讯地图实现微信小程序地图定位教程
  15. 打印机服务器纸张属性不显示,为什么我的打印机能在打印机服务器属性里设置自定义纸张大小,却无法? 爱问知识人...
  16. domino获取邮件中的密送的收件人-字段:Recipients
  17. 机器视觉光源选择方案
  18. ICLR 2018 有什么值得关注的亮点?
  19. Unity3d简单的发牌效果
  20. python中断响应_Python手动中断(Ctrl-C)多线程程序

热门文章

  1. 考研计算机专业课考研大纲,计算机考研专业课大纲及数一大纲
  2. web前端学习资源分享清单(持续更新)
  3. 求一个数的个位,十位,百位,千位分别是多少?/三目运算符的应用?
  4. 横跨欧亚大陆的城市-----★美丽的伊斯坦布尔★游记
  5. 基于 ARM 单片机的 低成本 二维码扫码模块
  6. 查看linux中程序是否被系统杀死,如何查看日志
  7. 信号采样基本概念 —— 5. 加权移动平均滤波(Weighted Moving Average Filtering)
  8. 纪念SlingShot 矩阵快速幂 构造矩阵
  9. php验证码zhuc_php 验证码生成方法 及使用
  10. 最好的PPP协议详解