XACT_ABORT 用法
首先创建一张表
Create Table TranTable
(
Id INT IDENTITY(1,1) PRIMARY KEY,
Priority TINYINT--最大值255
)
1.再执行下面的语句:
set XACT_ABORT ON
begin tran
INSERT INTO TranTable VALUES(1)
INSERT INTO TranTable VALUES(256)
INSERT INTO TranTable VALUES(5)
commit tran
出现下面的message:
(1 row(s) affected)
Msg 220, Level 16, State 2, Line 4
Arithmetic overflow error for data type tinyint, value = 256.
有一条语句出错整个事务回滚,没有问题
2.当我们设置 set XACT_ABORT OFF
执行后出现下面的Message
(1 row(s) affected)
Msg 220, Level 16, State 2, Line 4 Arithmetic overflow error for data type tinyint, value = 256. The statement has been terminated.
(1 row(s) affected)
每条语句都是各自为事务,没有整个事务回滚
这时候就需要通过捕获异常,回滚事务
Message 信息:
(1 row(s) affected)
(0 row(s) affected)
整个事务回滚
3.执行下面的脚本,注意没有 begin tran
set XACT_ABORT ON
go
begin
INSERT INTO TranTable VALUES(1)
INSERT INTO TranTable VALUES(256)
INSERT INTO TranTable VALUES(5)
end
Message 信息:
(1 row(s) affected)
Msg 220, Level 16, State 2, Line 4
Arithmetic overflow error for data type tinyint, value = 256.
每个语句作为一个事务,事务在错误行终止,错误行回滚,错误行之前的不回滚
PS:
新建一个连接,执行下面的脚本:
INSERT INTO TranTable VALUES(1)
INSERT INTO TranTable VALUES(256)
INSERT INTO TranTable VALUES(5)
发现有插进了两条数据
如果执行下面的脚本
INSERT INTO TranTable VALUES(1)
select ff from TranTable -- 没有ff这一列
INSERT INTO TranTable VALUES(5)
会发现三条语句作为一个事务,整体回滚
也许就应了这句话的解释:在事务中,回滚一个语句还是整个事务视错误的严重程序而定,用户级错误一般不会回滚整个事务
set XACT_ABORT OFF 为默认设置,是否回滚整个事务也是要看错误的级别
XACT_ABORT 用法的更多相关文章
- Sql Server 常用事务处理总结
在数据库操作中,常用事务写法: 1. 通过 @@error 判断一批sql 执行完毕,是否有异常. @@error 为系统变量,每次执行完 sql 都会返回一个数值, 0 表示 执行成功 ,非0 ...
- SQL Server 中的SET XACT_ABORT各种用法及显示结果
源地址:http://www.cnblogs.com/rob0121/articles/2320932.html 点击进入 默认行为:默认为SET XACT_ABORT OFF,没有事务行为. S ...
- SET XACT_ABORT 的用法[转]
SET XACT_ABORT指定当 Transact-SQL 语句产生运行时错误时,Microsoft® SQL Server™ 是否自动回滚当前事务. 语法 SET XACT_ABORT { ON ...
- 数据库事物用法 SET XACT_ABORT ON
数据库事物的用法和作用就不再重复,写一下在实战当中遇到的问题,代码如下: begin tran --开始执行事务 --语句一 update set acount = acount-100 w ...
- sql事务(Transaction)用法介绍及回滚实例
sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务, S ...
- EditText 基本用法
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...
- jquery插件的用法之cookie 插件
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
随机推荐
- $lookup
db.orders.aggregate([ { $lookup: { from: "inventory", localField: "item", foreig ...
- UVA 10294 等价类计数
题目大意: 项链和手镯都是若干珠子穿成的环形首饰,手镯可以旋转和翻转,但项链只能旋转,给n个珠子,t种颜色,求最后能形成的手镯,项链的数量 这里根据等价类计数的polya定理求解 对于一个置换f,若一 ...
- 一台服务器搭载两个tomcat项目
之前下载的mysql 在官网是有 历史库的 如果现在一台机器上已经部署了一个tomcat服务,无论这个tomcat是否已经注册为服务了,或者没有注册windows服务,或者注册了,都没关系.都可以采 ...
- android 之 XMLPull
Pull解析 Pull的XML解析操作与SAX解析操作类似,也是采用事件驱动的方式.当XML文档开始解析或者遇到节点时都会有相应的事件代码触发. 主要涉及两个类: org.xmlpull.v1.Xml ...
- Setup Factory 打包.netframework 2.0
在setup factory 的安装目录下的Dependencies中新建目录dotnet20/并放入dotnetfx2.0.exe: Dependencies目录中再加xml文件dotnet20.x ...
- 《day14---多线程入门_进阶》
/* 多线程: 进程:正在执行中的程序,一个应用程序启动后在内存中运行的那片空间.进程具有动态性和并发性. 线程:进程中的一个执行单元.负责进程中的程序的运行的.一个进程中至少要有一个线程. 一个进程 ...
- poj2891 拓展欧几里得
//Accepted 164 KB 16 ms //拓展欧几里得 //m=a1*x+b1 --(1) //m=a2*(-y)+b2 --(2) //->a1*x+a2*y=b2-b1 //由欧几 ...
- 如何由Height Map生成Normal Map
转自:http://www.cnblogs.com/cxrs/archive/2009/11/01/1594155.html Nvidia和ATI都有相应的工具把Heightmap转成NormalMa ...
- 2016-1-7第一个完整APP 私人通讯录的实现 5:保存数据
一:登陆界面 1):用户点击登陆按钮并成功登陆后,根据此时的开关情况选择是否保存数据,代码如下: "]) { [self performSegueWithIdentifier:@" ...
- hadoop环境搭建遇到问题集锦
1 在hadoop的bin目录下, 运行hadoop version命令,提示“hadoop:没有此命令” 解决办法: ./hadoop version或者$HADOOP_HOME/bin放在PAT ...