説明/参照:
Explanation:
XACT_STATEは、現在実行中の要求のユーザトランザクション状態を報告するスカラ関数です。
XACT_STATEは、リクエストにアクティブなユーザートランザクションがあるかどうか、およびトランザクションがコミット可能かどうかを示します。
XACT_STATEの状態は次のとおりです。
0現在の要求に対するアクティブなユーザートランザクションはありません。

1現在の要求にはアクティブなユーザートランザクションがあります。要求は、次のようなあらゆるアクションを実行できます。

データの書き込みとトランザクションのコミット
2現在の要求にアクティブなユーザートランザクションがありますが、エラーが発生したため、

コミットできないトランザクションとして分類されるトランザクション。
正しい使用例
開始キャッチ
- XACT_STATEを0、1、または-1でテストします。
- 1の場合、トランザクションはコミット可能です。
- -1の場合、トランザクションはコミット不可能であり、
- ロールバックします。
- XACT_STATE = 0はトランザクションがないことを意味し、
- コミットまたはロールバック操作はエラーを生成します。
- トランザクションがコミット不可能かどうかをテストします。
IF(XACT_STATE())= -1
ベギン
PRINT 'トランザクションはコミット不可能な状態です。' +
'トランザクションをロールバックしています。
ロールバック取引
終わり;
- トランザクションがアクティブで有効かどうかをテストします。
IF(XACT_STATE())= 1
ベギン
PRINT 'トランザクションはコミット可能です。' +
「コミットトランザクション」
トランザクションのコミットメント
終わり;
キャッチ終了;
参考文献:
https://msdn.microsoft.com/ja-jp/library/ms188792.aspx
https://msdn.microsoft.com/ja-jp/library/ms189797.aspx