今天在试MSSQL2008里的事务,发现如果事务中某条语句的表名错误,就无法用@@error或try回滚,具体如下:
begin tran
delete from test where id = 5 --正确语句
dealete from testa where id1 = 4 --表名错误,testa 表不存在
if @@error > 0
begin
rollback
return
end
commit
这样就不能回滚。
begin tran
delete from test where id = 5 --正确语句
dealete from test where id1 = 4 --字段错误,字段id1不存在
if @@error > 0
begin
rollback
return
end
commit
这样可以回滚。
不知道是这是MSSQL2008的一个bug,还是我写的有问题。