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;
SqlCommand.ExecuteNonQuery()
メソッドを使用して、C# (.NET 4.5) でこの手順を呼び出します。すべての例外はキャッチされますtry--- catch
現在、このメソッドのドキュメントには、「ロールバックが発生した場合、戻り値は -1 です」と記載されています。
質問: 例外を取得せずにロールバックが発生する可能性はありますか?
これまでのところ、SQL ステートメントを実行できなかった場合は常に例外が発生しました。しかし、例外をスローせずにロールバックが「自動的に」発生する場合はありますか?