トランザクションでエラーが出た際にTry ~ Catchなしでロールバックする方法(XACT_ABORT)
SQL ServerのTransact-SQLで、トランザクション処理中にエラーが出た際、Try ~ Catchを使わずにをロールバックする方法についてです。
いつもTry ~ Catchで囲んでやっていましたが、エラー処理で特別な処理をしないのであれば、XACT_ABORTをONにしてやるだけでよく、その方が見やすいので、できれば積極的に使って行きましょう。
コード
コードは以下の通り。
SET XACT_ABORT ON
BEGIN TRANSACTION
~
COMMIT TRANSACTION
冒頭に述べた通り、最初にXACT_ABORTをONにしているだけです。
これをTry~Catchでやろうとすると
BEGIN TRY
BEGIN TRANSACTION
~
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK
END
END CATCH
のようになるので、Try~Catchを使わない方がスッキリしたコードになります。