2018.2.5
2020.1.7

トランザクションでエラーが出た際に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を使わない方がスッキリしたコードになります。

参考リンク

SQL Server】関連記事