日期:2014-05-17  浏览次数:20510 次

一个回滚事务的测试,请教?
存储过程

insert A (a) values (@a)
insert B (b) values (@b)
insert C (c) values (@c)



当在第三个表C insert参数传递的时候会发生错误。

请问,SQL SERVER默认的机会会让A,B表回滚么?


那么直接在这里写事务好还是在ADO里用事务好。

------最佳解决方案--------------------
begin tran
insert A (a) values (@a)
insert B (b) values (@b)
insert C (c) values (@c)
if @@error<>0
rollback tran
else 
commit tran
------其他解决方案--------------------
事务当然写道存储过程里 便于维护管理。
默认A,B不会回滚,需要加事务控制
------其他解决方案--------------------
都在存储过程了,把 SET XACT_ABORT ON 带上。
------其他解决方案--------------------
事务由SQLServer自己来处理好,所以放到SQLServer里面去。
至于回滚,要看你的目的,还可以设置回滚保存点(不记得是不是这样叫)等等
BEGIN TRAN 
insert A (a) values (@a)
insert B (b) values (@b)
insert C (c) values (@c)
IF @@ERROR <> 0 
    ROLLBACK
ELSE 
    COMMIT

------其他解决方案--------------------
SET XACT_ABORT ON  这个好像是2008才有的
------其他解决方案--------------------
引用:
SET XACT_ABORT ON  这个好像是2008才有的


对,就是用这个。。。
------其他解决方案--------------------
引用:
引用:
SET XACT_ABORT ON  这个好像是2008才有的

对,就是用这个。。。
意思是你懂了
------其他解决方案--------------------
引用:
引用:引用:
SET XACT_ABORT ON  这个好像是2008才有的

对,就是用这个。。。意思是你懂了

你自己百度啊。server 2008