SQL SERVER 事务的使用(tran)
sql server事务的使用是为了确保数据的一致性。
通常写法
begin tran
--sql 语句1
--sql 语句2
--sql 语句3
commit tran
上面写法存在隐患,当操作(增删改)是由null引发的错误时,事务会跳过错误继续执行正常的语句。例如:
--创建表Student
create table Student(Name nvarchar(20) not null)
--建立事务
begin tran
inserted into Student(Name) values (null)
inserted into Student(Name) values ('小札')
inserted into Student(Name) values (null)
commit tran
--由null引发的错误,insert,delete,update都会跳过错误继续执行
上面结果会多一条数据为“小札”。为了避免了这样的问题:
有三种方法:其中@@error,@@trancount是全局变量,只要发生错误,@@error不等于0,只要执行一次事务,@@trancount就+1,回滚会变为0。
【方法一】:xact_abort on/off on:开启,事务一旦出问题,全部回滚 off:关闭,不检查事务是否发生错误。
set xact_abort on
begin tran
--sql语句1
--sql语句2
--sql语句3
commit
【方法二】:每条操作语句后面判断是否回滚。
begin tran
--sql语句1
if @@error<>0
begin
rollback tran
return --这里除了return跳出,也可以使用goto+标签跳出事务
end
--sql语句2
if @@error<>0
begin
rollback tran
return
end
commit tran
【方法三】:try catch
begin tran
begin try
--sql语句1
--sql语句2
--sql语句3
end try
begin catch
if @@trancount>0
rollback tran
end catch
if @@trancount>0
commit tran
SQL SERVER 事务的使用(tran)的更多相关文章
- SQL Server事务的隔离级别
SQL Server事务的隔离级别 ########## 数据库中数据的一致性 ########## 针对并发事务出现的数据不一致性,提出了4个级别的解决方法: 隔离级别 第一类丢失更新 脏读 ...
- 【SqlServer系列】浅谈SQL Server事务与锁(上篇)
一 概述 在数据库方面,对于非DBA的程序员来说,事务与锁是一大难点,针对该难点,本篇文章视图采用图文的方式来与大家一起探讨. “浅谈SQL Server 事务与锁”这个专题共分两篇,上篇主讲事务及 ...
- SQL Server事务回滚对自增键的影响
SQL Server事务回滚时是删除原先插入导致的自增值,也就是回滚之前你你插入一条数据导致自增键加1,回滚之后还是加1的状态 --如果获取当前操作最后插入的identity列的值:select @@ ...
- SQL server 事务实例
简单的SQLserver事务实例: 执行SQL 组合操作A.操作B,只有AB都执行成功时才提交事务,否则回滚事务. 测试数据表: --1.数据表A CREATE TABLE A( A1 VARCHAR ...
- 浅谈SQL Server事务与锁(上篇)
一 概述 在数据库方面,对于非DBA的程序员来说,事务与锁是一大难点,针对该难点,本篇文章试图采用图文的方式来与大家一起探讨. “浅谈SQL Server 事务与锁”这个专题共分两篇,上篇主讲事务及 ...
- 人人都是 DBA(VI)SQL Server 事务日志
SQL Server 的数据库引擎通过事务服务(Transaction Services)提供事务的 ACID 属性支持.ACID 属性包括: 原子性(Atomicity) 一致性(Consisten ...
- Sql Server 事务隔离级别的查看及更改
根据自身 Sql Server 的情况来自定义 事务隔离级别,将会更加的满足需求,或提升性能.例如,对于逻辑简单的 Sql Server,完全可以使用 read uncommitted 模式,来减少死 ...
- 理解Sql Server 事务隔离层级(Transaction Isolation Level)
关于Sql Server 事务隔离级别,百度百科是这样描述的 隔离级别:一个事务必须与由其他事务进行的资源或数据更改相隔离的程度.隔离级别从允许的并发副作用(例如,脏读或虚拟读取)的角度进行描述. 隔 ...
- SQL SERVER 事务和锁
内容皆整理自网络 一.事务 作者:郭无心链接:https://www.zhihu.com/question/31346392/answer/59815366来源:知乎著作权归作者所有.商业转载请联系作 ...
随机推荐
- mysql创建表时符号``的作用
新建表语句如下: CREATE TABLE `course` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(200) NOT NU ...
- shell脚本----周期压缩备份日志文件
一.日志文件样式 二.目标 1.备份压缩.log结尾&&时间样式为“date +%Y%m%d”的日志文件(如:20170912.20160311等) 2.可指定压缩范围(N天前至当天) ...
- data日期转化
eg: var time="2018-05-19T08:04:52.000+0000"; var d = new Date(time); var times=d.getF ...
- 运行pytorch代码遇到的error解决办法
1.no CUDA-capable device is detected 首先考虑的是cuda的驱动问题,查看gpu显示是否正常,然后更新最新的cuda驱动: 第二个考虑的是cuda设备的默认参数是否 ...
- HDU 2586 How far away(dfs+邻接表)
How far away [题目链接]How far away [题目类型]dfs+邻接表 &题意: 题目大意:一个村子里有n个房子,这n个房子用n-1条路连接起来,接下了有m次询问,每次询问 ...
- caffe运行报错:datum channel>0(0:0)
caffe在运行的时候报错:datum channel>0(0:0) 错误原因:数据通道错误,caffe不能识别 解决方案:不告诉你
- 18 os/os.path模块中关于文件/目录常用的函数使用方法 (转)
os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名('. ...
- sitecore 数字化营销-path funnel
路径分析器是一个应用程序,允许您查看联系人在浏览网站时所采用的各种路径.您可以查看联系人在转换目标并与广告系列互动时所采用的路径,让您深入了解哪些路径为每次转化提供最佳参与价值,以及哪些路径效率较低且 ...
- CentOS6.5安装与配置Mysql数据库
from:http://www.centoscn.com/mysql/2014/1211/4290.html 一.mysql简介 说到数据库,我们大多想到的是关系型数据库,比如mysql.oracle ...
- button theme
children:[ButtonTheme.bar( child:ButtonBar( children:[ FlatButton... ], ),), ]