数据库事物用法 SET XACT_ABORT ON
数据库事物的用法和作用就不再重复,写一下在实战当中遇到的问题,代码如下:
begin tran --开始执行事务
--语句一
update set acount = acount-100 where person = 1
--语句二
update set acount = acount+100 where person = 2
--语句三
insert into T_IMP_LOG values (1,2,100)
if @@error<>0 --判断如果语句有任何一条出现错误
begin rollback tran --开始执行事务的回滚
return 0
end
else --如何都执行成功
begin
commit tran --执行这个事务的操作
return 1
end
在上面代码中,我遇到的问题是:语句二出错,语句一仍然执行,语句三不执行,本以为添加了事物控制就能全部回滚,后来查了资料才知道需要加上SET XACT_ABORT ON。
语法
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 的设置是在执行或运行时设置,而不是在分析时设置。
如果想要事物支持出错全部回滚,那么上面的代码如下:
SET XACT_ABORT ON
begin tran --开始执行事务
--语句一
update set acount = acount-100 where person = 1
--语句二
update set acount = acount+100 where person = 2
--语句三
insert into T_IMP_LOG values (1,2,100)
if @@error<>0 --判断如果语句有任何一条出现错误
begin rollback tran --开始执行事务的回滚
return 0
end
else --如何都执行成功
begin
commit tran --执行这个事务的操作
return 1
end
转载:http://blog.csdn.net/fengchao1000/article/details/7717841
数据库事物用法 SET XACT_ABORT ON的更多相关文章
- 数据库事物四大特性-ACID
事务的:原子性.一致性.分离性.持久性 事物(transaction)是由一些列操作序列构成的执行单元,这些单元要么都做,要么不做,是一个不可分割的工作单元. 数据库事物的四个基本性质(ACID) 1 ...
- Spring中的数据库事物管理
Spring中的数据库事物管理 只要给方法加一个@Transactional注解就可以了 例如:
- 数据库事物 jdbc事物 spring事物 隔离级别:脏幻不可重复读
1.数据库事物: 事物的概念 a给b打100块钱的例子 2.jdbc事物: 通过下面代码实现 private Connection conn = null; private PreparedState ...
- spring boot redis 数据库缓存用法
缓存处理方式应该是 1.先从缓存中拿数据,如果有,直接返回.2.如果拿到的为空,则数据库查询,然后将查询结果存到缓存中.由此实现方式应该如下: private String baseKey = &qu ...
- Spring+Mybatis+SpringMVC+Atomikos多数据源共存+不同数据库事物一致性处理
网上找了一大堆的例子,没一个跑通的,都是copy转发,哎,整理得好辛苦..做个笔记,方便正遇到此问题的猿们能够得到帮助....废话不多说,贴代码..... 项目结构说明: 1.dao层的admin.w ...
- mysql连接远程数据库的用法
mysql -u root -p 等这些常用的参数外,你知道多少?来测试一下吧 一,mysql命令行参数 Usage: mysql [OPTIONS] [database] //命令方式 -?, ...
- AOD.NET实现数据库事物Transaction
在开始介绍文章主要内容前先简单说一下事务 1.事务介绍 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行.因此事务是一个不可分割的工作逻辑单元.在数据库 ...
- MongoDB数据库基本用法
show dbs:显示数据库列表 show collections:显示当前数据库中的集合(类似关系数据库中的表) show users:显示用户 use <db name>:切换当前 ...
- Android sqlite管理数据库基本用法
Android操作系统中内置了sqlite数据库(有关sqlite数据库详细介绍见:http://zh.wikipedia.org/wiki/SQLite),而sqllite本身是一个很小型的数据库, ...
随机推荐
- 【web技术】html特效代码(二)
html特效代码(一) html特效代码(二) 图片漂浮广告代码 <bodybgcolor="#F7F7F7"> <!--图片漂浮广告代码开始--> < ...
- springboot+sqlite+maven+mybatis
https://blog.csdn.net/u012343297/article/details/79163977 ****************************************** ...
- 面试总结:QuickSort 解析
Quick Sort http://en.wikipedia.org/wiki/Quicksort Quicksort, or partition-exchange sort, is a sortin ...
- [转载]CMMI之功能点估算法:EI、EQ和EO
EI.EO.EQ EI是处理来自于应用程序边界外部的一组数据的输入,它的主要目的是维护一个或多个ILF,以及/或者更改系统的行为. EO是输送数据到应用程序边界外部的过程.它的主要目的是通过逻辑处理过 ...
- C#学习笔记(28)——匿名委托和Lambda表达式
说明(2017-11-21 18:51:32): 1. 例子为求1~100的和,答案应该是5050(小学学算盘的时候,我爹就让我算,从1拨到100是多少呀?当时的我年幼无知,还不知道高斯小时候的故事, ...
- JavaScript高级 面向对象(13)--构造函数的执行过程
说明(2017-4-2 21:50:45) 一.构造函数是干什么用的: 1. 初始化数据的. 2. 在js给对象添加属性用的,初始化属性值用. 二.创建对象的过程: 1. 代码:var p = new ...
- ios xib和代码的frame布局 iOSXib布局后代码修改约束的值
如何修改autolayout 约束的值? 1 2 3 4 5 6 目前我已知的方法有5种 1.修改frame(有时候可能会不起作用,但可以做动画) 2.修改约束的float值 3.使用VisualFo ...
- iOSAFNetworking 网络请求
前言 在 iOS 开发中,一般情况下,简单的向某个 Web 站点简单的页面提交请求并获取服务器的响应,用 Xcode 自带的 NSURLConnection 是能胜任的.但是,在绝大部分下我们所需要访 ...
- EnumUtil
EnumUtil.cs using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...
- 【Android】Android6.0发送短信Demo
整理一下使用SmsManager类发送短信的方法. https://developer.android.com/reference/android/telephony/SmsManager.html ...