SET XACT_ABORT 的用法

原创 2004年10月30日 10:33:00

SET XACT_ABORT

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

语法

SET XACT_ABORT { ON | OFF }

注释

SET XACT_ABORTON 时,如果 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
 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


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
    was OFF and rest of transaction
   succeeded.
   Key 5 insert error with  caused
   all of the second transaction to roll back. */

SELECT * 
FROM t2
GO

DROP TABLE t2
DROP TABLE t1
GO

数据库事物用法 SET XACT_ABORT ON

数据库事物的用法和作用就不再重复,写一下在实战当中遇到的问题,代码如下: begin tran --开始执行事务      --语句一     update  set acount = acou...
  • fengchao1000
  • fengchao1000
  • 2012年07月05日 11:22
  • 6075

SET XACT_ABORT 的用法

SET XACT_ABORT指定当 Transact-SQL 语句产生运行时错误时,Microsoft® SQL Server™ 是否自动回滚当前事务。语法SET XACT_ABORT { ON | ...
  • confei
  • confei
  • 2007年08月10日 11:16
  • 3007

存储过程中的 SET XACT_ABORT ON 和事务

在存储过程中写SET XACT_ABORT ON 有什么用? SET XACT_ABORT ON是设置事务回滚的! 当为ON时,如果你存储中的某个地方出了问题,整个事务中的语句都会回滚 为OF...
  • Fanbin168
  • Fanbin168
  • 2016年08月17日 22:49
  • 2169

SET XACT_ABORT { ON | OFF } 设置整个事务终止并回滚方法

SET XACT_ABORT { ON | OFF } 语法 SET XACT_ABORT { ON | OFF } 注释 当 ...
  • xwnxwn
  • xwnxwn
  • 2013年10月19日 11:30
  • 1171

SET XACT_ABORT { ON | OFF }

SET XACT_ABORT { ON | OFF } 2011-05-23 09:40 语法 SET XACT_ABORT { ON | OFF ...
  • wym3587
  • wym3587
  • 2011年11月06日 14:24
  • 6911

SET XACT_ABORT的用法

指定当 Transact-SQL 语句产生运行时错误时,Microsoft® SQL Server™ 是否自动回滚当前事务。 语法 SET XACT_ABORT { ON | OFF } ...
  • zxg1258
  • zxg1258
  • 2011年12月08日 22:23
  • 270

SET XACT_ABORT用法(事务)

SET XACT_ABORT指定當 Transact-SQL 陳述式發生執行時期錯誤時,Microsoft®  SQL Server™是否會自動復原目前的交易。 語法SET XACT_ABORT { ...
  • htl258
  • htl258
  • 2010年04月22日 09:29
  • 1371

关于SQL的XACT_ABORT属性

XACT_ABORT原意是精确终止 其实在SQL运行中很好理解 默认XACT_ABORT=OFF的情况下,语句不管什么情况,遇到什么错误,反正错误了也继续执行,意思为错也不回头。 在XACT_ABOR...
  • blandwolf
  • blandwolf
  • 2017年03月31日 08:55
  • 1370

sql set nocount on 问题

数据库有表A,B ,  现在有一个需求, 当表A修改、增加、删除时候,更新表B内的一个字段。      汗,听着挺简单的,于是呼呼呼就开始写了。      set ANSI_NUL...
  • lailai186
  • lailai186
  • 2013年05月23日 10:47
  • 1450

SET XACT_ABORT ON

Syntax SET XACT_ABORT { ON | OFF} Remarks When SET XACT_ABORT is ON, ...
  • ImYourMan
  • ImYourMan
  • 2016年01月04日 11:53
  • 209
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SET XACT_ABORT 的用法
举报原因:
原因补充:

(最多只允许输入30个字)