我只是对 TSQL 中的一些东西感到惊讶
raiserror('Something bad happened', 16, 1);
将停止存储过程(或任何批处理)的执行。
但我的 ADO.NET 错误消息恰恰证明了相反的情况。我得到了异常消息中的两个提示错误错误消息,以及在此之后发生的下一个事件。
这是我的变通方法(这是我的习惯) ,但似乎没有必要:
if @somethingBadHappened
begin;
raiserror('Something bad happened', 16, 1);
return;
end;
医生说:
当 SETXACT _ ABORT 为 ON 时,如果 Transact-SQL 语句引发运行时错误,则整个事务将终止并回滚。
这是否意味着我必须使用显式事务?