第一种解决方案。
您无法以这种方式在Sybase上捕获异常。在更新之前,您必须检查数据:
if not exists( select 1 from table2 where id = 1)begin update table2 set id = 1 where id = 30endelsebegin print 'rolled back' rollbackend
第二解决方案。
您还可以在过程中添加更新命令,然后可以捕获异常。创建过程:
create procedure myprocasbegin update table2 set id = 1 where id = 30end
并如下运行:
begin tranupdate table1set name = 'new name'where name = 'old name'exec myprocIF @@error = 0begin print 'commited' commitendelsebegin print 'rolled back' rollbackend



