SET XACT_ABORT各种用法及显示结果

原创 2007年10月11日 20:00:00

一、准备工作:

       1、首先我们创建测试数据库:

create database demo

    2、创建数据表和测试数据:(这里注意外键控制)

use demo
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

二、各种用法及输出结果:

      1、语句1:

use demo

--Invoking a run-time error
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

      结果1:只回滚错误行,语句还继续执行。

--select * from score
101    90
102    78
103    81
104    65

 

      2、语句2:

use demo

--事务回滚
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

      结果2:事务终止并全部回滚,结果为空。

--select * from score

      3、语句3:

use demo

--事务在错误行终止,错误行回滚,错误行之前的不回滚
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

      结果3:出现这种是因为系统把每个insert语句都看成是单独的事务,所以错误行以前的是不回滚的。

--select * from score
101    90
102    78

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

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

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

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

Java常用数据结构总结

Java中有几种常用的数据结构,主要分为Collection和Map两个主要接口,而程序中最终使用的数据结构是继承自这些接口的数据结构类。其主要关系: 1、几个常用类的区别: 1.Arra...
  • wufaliang003
  • wufaliang003
  • 2017年02月16日 17:04
  • 1171

SET XACT_ABORT各种用法及显示结果

默认行为   默认为SET XACT_ABORT OFF,没有事务行为。 SET XACT_ABORT ON   SET XACT_ABORT ON分为两种:   1、总体作为一个事务,整体提...
  • PressTab
  • PressTab
  • 2015年04月12日 14:15
  • 262

数据库事物用法 SET XACT_ABORT ON

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

SET XACT_ABORT的用法

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

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
  • 6866

SET XACT_ABORT 的用法

原文 :http://study.qqcf.com/web/619/167733.htm SET XACT_ABORT       指定当 Transact-SQL 语句产生运行时错误时,Micros...
  • chelen_jak
  • chelen_jak
  • 2012年05月23日 15:44
  • 664

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

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

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

SET XACT_ABORT { ON | OFF } 语法 SET XACT_ABORT { ON | OFF } 注释 当 ...
  • xwnxwn
  • xwnxwn
  • 2013年10月19日 11:30
  • 1129
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SET XACT_ABORT各种用法及显示结果
举报原因:
原因补充:

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