begin traninsert into testname (tname) values (@name)
while (...)
begin
set @sql = '....'
exec(@sql)
endif @@error<>0
rollback tran
else
commit tran
以上是部分代码,我想问的就是,当while内部的exec(@sql)出错后,为什么第一个insert还是执行成功了?我想实现的效果是,如果while内部的exec出错,则整个事务都回滚,请问应该如何修改?谢谢
begin tran
insert into testname (tname) values (@name)
while (...)
begin
set @sql = '....'
exec(@sql)
endif @@error<>0
rollback tran
else
commit tran
begin tran
insert into testname (tname) values (@name)
while (...)
begin
set @sql = '....'
exec(@sql)
end commit tran
end try
begin catch
rollback
end catch
我试过了,不行啊,第一个insert还是插入了,但执行while里的语句报如下的错误:服务器: 消息 207,级别 16,状态 1,行 1
列名 'tid' 无效。