关于事务回滚,rollback tran到底要不要写?
关于事务回滚,有些不明白,不知道rollback tran在什么时候用。
begin tran update 表1 update 表2 commit tran 这种写法,在更新表1或表2时出错,事务会不会自动回滚? 如果要加上rollback tran应该加在什么地方?每执行更新表后都用if @@error<>0 rollback tran做个判断吗? |
--我比较习惯加xact_abort选项 SET XACT_ABORT ON begin tran update 表1 update 表2 commit tran |
BEGIN TRANSACTION BEGIN TRY sql_statement COMMIT END TRY BEGIN CATCH ROLLBACK TRANSACTION END CATCH |
begin tran update 表1 if @@error<>0 begin rollback tran return end update 表2 if @@error<>0 begin rollback tran return end commit tran |
就看你的set XACT_ABORT 是on还是off了.
当 SET XACT_ABORT 为 ON 时,如果 Transact-SQL 语句产生运行时错误,整个事务将终止并回滚。为 OFF 时,只回滚产生错误的 Transact-SQL 语句,而事务将继续进行处理。 1.set XACT_ABORT off set XACT_ABORT off begin tran update 表1 update 表2 commit tran 结论:如果第二个语句发生错误,那么整个事务将会忽略而提交。因此会造成你的数据的不一致的现象。因此这种情况需要对错误进行判断,如:if @@error <>0 rollback tran 2.set XACT_ABORT on set XACT_ABORT on begin tran update 表1 update 表2 commit tran 结论:如果第二个语句发生错误,,那么整个事务将会自动的回滚。因此可以保证你的数据的一致性,因此不需要对错误进行判断。 |
上面写错了 declare @flag int set @flag=0 begin tran update 表1 |
关于事务回滚,rollback tran到底要不要写?的更多相关文章
- mysql分类和事务回滚
主要内容: ***数据定义语言DDL重点 ***数据操纵语言DML重点 数据查询语言DQL重点 ---事务控制语言TCL ---数据库控制语言DCL ---主键(primary key) ---数据冗 ...
- SqlServer事务回滚(2)
SQL Server 2008中SQL应用系列--目录索引 SQL事务 一.事务概念 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行.因此事务是 ...
- [SQL]事务回滚详解及示例
存储过程中的 SET XACT_ABORT ON 和事务 在存储过程中写SET XACT_ABORT ON 有什么用? SET XACT_ABORT ON是设置事务回滚的! 当为ON时,如果你存储中的 ...
- SQL Server事务回滚对自增键的影响
SQL Server事务回滚时是删除原先插入导致的自增值,也就是回滚之前你你插入一条数据导致自增键加1,回滚之后还是加1的状态 --如果获取当前操作最后插入的identity列的值:select @@ ...
- C#使用SqlTransaction事务回滚与SqlBulkCopy批量插入数据
C#中批量处理数据,有时候因为一条记录导致整个批量处理失败.这时候肯能会导致数据不全等问题,这时候我们可以使用SqlTransaction来进行事务回滚,即是要么全部成功要么全部不成功.如下代码 // ...
- SQL 事务回滚
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服 ...
- Spring异常抛出触发事务回滚
Spring.EJB的声明式事务默认情况下都是在抛出unchecked exception后才会触发事务的回滚 /** * 如果在spring事务配置中不为切入点(如这里的切入点可以定义成test*) ...
- 【Java EE 学习 19】【使用过滤器实现全站压缩】【使用ThreadLocal模式解决跨DAO事务回滚问题】
一.使用过滤器实现全站压缩 1.目标:对网站的所有JSP页面进行页面压缩,减少用户流量的使用.但是对图片和视频不进行压缩,因为图片和视频的压缩率很小,而且处理所需要的服务器资源很大. 2.实现原理: ...
- jfinal 基本应用 --事务回滚
事务回滚 1.当时需要用到事务回滚,但是看到网上只有问题,没有真实的到底怎么用法. 2.我看了一下文档,结合了网上的大神的博客. 第一种方法: Db.tx(new IAtom(){ @Override ...
随机推荐
- (二)JavaScript 输出
avaScript 没有任何打印或者输出的函数. JavaScript 显示数据 JavaScript 可以通过不同的方式来输出数据: 使用 window.alert() 弹出警告框. 使用 docu ...
- python 那些我记不清的函数
eval 函数:用来计算在字符串中的有效Python表达式,并返回一个对象......将字符串变回数据类型 enumerate函数:加上序号 isinstance函数:判断数据类型 isinstanc ...
- Apollo 3.0 硬件与系统安装指南
https://github.com/ApolloAuto/apollo/blob/master/docs/quickstart/apollo_3_0_hardware_system_installa ...
- MySql 建表出现的问题:[ERR] 1064 - You have an error in your SQL syntax; check the manual.......
使用 MySql 建表出现的问题 在使用 Navicat Premium 运行 sql 语句进行建表时,MySQL 报错如下: 建表语句: DROP DATABASE IF EXISTS javawe ...
- Shiro核心概述
0.写在前面的话 最近在考虑权限相关的东西,于是就找到了Shiro,开涛老师的Shiro教程博客(<跟我学Shiro>)写得实在很好还带所有源码,所以我也就没有自己再总结各个阶段的笔记,只 ...
- Vue-发布订阅机制(bus)实现非父子组件的传值
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 基于注解处理器开发自动生成getter和setter方法的插件
昨天无意中,逛到了lombok的网站,并看到了首页的5分钟视频,视频中的作者只是在实体类中写了几个字段,就可以自动编译为含setter.getter.toString()等方法的class文件.看着挺 ...
- JVM总括三-字节码、字节码指令、JIT编译执行
JVM总括三-字节码.字节码指令.JIT编译执行 目录:JVM总括:目录 java文件编译后的class文件,java跨平台的中间层,JVM通过对字节码的解释执行(执行模式,还有JIT编译执行,下面讲 ...
- transfer.sh:通过命令行简单的创建文件分享
简介 通过一个命令,就可以在终端上,将文件加密传输到远程服务器,提供对外文件共享的功能. transfer.sh这是一个我常用的.可以在终端上使用的文件共享服务,可以在某些方面替代sz或者scp命令. ...
- 漫谈数组去重复方法(亮点是ES6的新API)
方法1: 利用遍历的思想来进行. <!DOCTYPE html><html lang="en"><head> <meta charset= ...