sql存储过程相互调用事务同步问题(50分)

  • 主题发起人 孤月独明
  • 开始时间

孤月独明

Unregistered / Unconfirmed
GUEST, unregistred user!
设存储过程A调用存储过程A1,A2,A3(三者不定义事务)
A中把A1,A2,A3包在事务中,只要A1,A2,A3有一个更新数据不成功,A中事务回滚,
令A1,A2,A3所有更新回滚。看下面的片段,试问:成功已否
create proc A
as
declare @i1,@i2,@i3 int;
begin tran
set @i1=exec A1;
if @i1<>0
roback tran
set @i2=exec A2
if @i2<>0
rollback tran
set @i3=exec A3
if @i3<>0
rollback tran
commit tran
 
按道理可以,不过代码不是很明了:
create proc A
as
declare @i1,@i2,@i3 int;
begin tran
set @i1=exec A1;
set @i2=exec A2;
set @i3=exec A3;
if (@i1=0)and(@i2=0)and(@i3=0)then
commit tran
else
rollback tran
end tran
 
顶部