SQL 事务 begin tran、commit tran、rollback tran 的用法

首先理解一下这三个事务的大概意思:

begin Transaction 可以理解成新建一个还原点。
commit Transaction 提交这个自begin tran开始的修改
rollback Transaction 表示还原到上个还原点。

今天在更新一个ERP仓库名称的时候导致该界面一直属于Locking 状态,还以为开发商修改了什么东西,原来是自己在执行update的时候导致的,太糊涂了。

当时update仓库语句是这样写:

begin tran

update ,,,,,,,

执行成功后就没有管了,过一会打开ERP该界面,卡死,无响应,重复登录几次还是一样,这时才想起来刚才执行了update语句,赶紧执行:rollback tran 语句,提示:

在点击ERP界面正常显示,松了一口气,因为begin tran  时没有跟commit tran 一起执行导致界面locking,但是说来有点怪,我记得以前用SMSS 执行update的时候 也没有加commit tran,为什么在Toad for  SQL srever 执行的时候会发生界面locking呢?检讨中。。。

--set xact_abort on     整体回滚所有语句

--set xact_abort off    只回滚出错语句

begin tran

update,,,,,

commit tran

set xact_abort on 和 rollback Transaction 结果一样,都是回滚所有。

一般把DML语句(select ,delete,update,insert语句)放在BEGIN TRAN...COMMIT TRAN 之间作为一个事务处理

也就是那些语句执行过程中如果遇到错误,无论哪句遇到错误,所有语句都会回滚到BEGIN TRAN之前的状态。

原文地址:https://www.cnblogs.com/jijm123/p/10524030.html