我想要写一个事务事务中执行如下语句insert a(a) values(1)
insert b(b) values(2)
insert c(c) VALUES(3)要求是执行中无论遇到任何错误(可能是表名指定不正确,可能是列名指定不正确,可能是列的数据状态不正确)都能正常回滚到最初状态,请问这样的事务该怎么写
insert b(b) values(2)
insert c(c) VALUES(3)要求是执行中无论遇到任何错误(可能是表名指定不正确,可能是列名指定不正确,可能是列的数据状态不正确)都能正常回滚到最初状态,请问这样的事务该怎么写
只可用動態exec('insert a(a) values(1)')--判斷--05事務方法
begin try
begin tram
..SQL
commit tran
end try
begin catch
select error_message()
rollback tran
end catch
insert a(a) values(1)
insert b(b) values(2)
insert c(c) VALUES(3)
if @@error=0
commit
else
rollback
begin tran mytran insert a(a) values(1)
insert b(b) values(2)
insert c(c) VALUES(3) if @@error=0
commit tran mytran
else
rollback tran mytran
表名、列名
只可用動態 exec('insert a(a) values(1)')--判斷 --05事務方法
begin try
begin tra…
[/Quote]
用此语句遇到表名不正确无法回退到最初状态,比如begin try
begin tran
insert into b values(1)
insert into a values(1)
commit
end try
begin catch
select error_message()
rollback tran
end catch
b表有而a表没有执行上述语句B表中会插入记录
begin tran
insert a(a) values(1)
if @@error<>0 goto HandleError
insert b(b) values(2)
if @@error<>0 goto HandleError
insert c(c) VALUES(3)
if @@error<>0 goto HandleError
HandleError: rollback tran
commit tran