在 SQL Server 2008r2 上,我们有一个如下所示的存储过程:
create procedure x(@arg1 as nvarchar(20), @arg2 ... )
as
begin
-- delete and insert values, depending on arguments
begin transaction;
delete from tblA where f1 = @arg1 ... ;
insert into tblB (a) select ... where f2 = @arg2 ... ;
commit transaction;
end;
我在 C# (.NET 4.5) 中使用SqlCommand.ExecuteNonQuery()
Method 调用此过程。所有异常都被捕获try--- catch
现在在此方法的文档中,它说“如果发生回滚,则返回值为 -1”。
问题:是否会发生回滚而没有异常?
到目前为止,我们总是遇到异常,如果 sql 语句无法执行。但是是否会出现回滚“自动”发生而不抛出异常的情况?