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

    xiaoxiao2021-04-11  43

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

    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://ju.6miu.com/read-666883.html

    最新回复(0)