一个回滚事务的测试,请教?
存储过程
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才有的
------其他解决方案--------------------
对,就是用这个。。。
------其他解决方案--------------------意思是你懂了
------其他解决方案--------------------
你自己百度啊。server 2008