一个回滚事务的测试,请教?
存储过程
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