日期:2014-05-18  浏览次数:20534 次

当只有begin tran和commit tran时会不会全部回滚?
有如下语句:
BEGIN       TRAN      
       
    select       ....      
    insert       ....      
    update       ...      
       
COMMIT       TRAN      

如果其中一条语句发生错误,事务会不会全部都回滚到未开始的时候.




------解决方案--------------------
不一定的。

除非你在事务语句前加上

set xact_abort on

begin tran
insert ...
update ...
delete ...
commit tran
------解决方案--------------------
加上 set xact_abort on 才会整体回滚。

如:

set xact_abort on

begin tran
insert ...
update ...
delete ...
commit tran

------解决方案--------------------
http://www.dbafield.com/?p=5