😎
正常実行できた場合にのみトランザクションをコミットするクエリーの書き方
備忘録として。
try-catchとtransactionを組み合わせて実現する、正常実行できた場合にのみトランザクションをコミットするクエリーの書き方です。
try-catchとtransactionを組み合わせたクエリー
サンプルクエリー
begin try
begin transaction
--ここに、実行するクエリーを書く
commit transaction
end try
begin catch
select
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage
rollback transaction
end catch
このようにして、正常実行できた場合にのみトランザクションをコミットするクエリーを作成することができます。
また、例外をキャッチしたときの動作を確認したい場合は、👇のようにして意図的に例外を発生させてあげてください。
意図的に例外を発生させる
RAISERROR (15600, -1, -1, 'sample');
Discussion