注:この質問は同じシナリオを提示する一連の質問の一部です。各質問
シリーズのユニークなソリューションが含まれています。解決策が記載された目標を満たしているかどうかを判断します。
Customer、CustomerInfo、OrderHeaderを更新するストアドプロシージャを作成する必要があります。
OrderDetailsテーブルを順番に並べます。
あなたはストアドプロシージャを確認する必要があります:
単一のトランザクション内で実行されます。

への更新のステータスに関係なく、CustomerテーブルとCustomerInfoテーブルへの更新をコミットします。

OrderHeaderテーブルとOrderDetailテーブル。
4つすべてのテーブルへの更新が成功すると、4つすべてのテーブルへの変更をコミットします。

解決方法:次のTransact-SQLセグメントを含むストアドプロシージャを作成します。

解決策は目標を満たしていますか?
正解:A
説明/参照:
Explanation:
最初の2つの更新(OrderHeader、OrderDetail)が成功した場合を処理する必要があります。
3番目または4番目(OrderHeader、OrderDetail)は失敗します。 BEGINに@CustomerComplete変数を追加します。
TRYブロックし、BEGIN CATCHブロックでテストします。
注:XACT_STATEは、リクエストにアクティブなユーザートランザクションがあるかどうか、および
トランザクションはコミット可能です。
XACT_STATE = 1:現在の要求にはアクティブなユーザートランザクションがあります。要求はあらゆるを実行できます
データの書き込みやトランザクションのコミットなどのアクション。
参考文献:
https://docs.microsoft.com/en-us/sql/t-sql/functions/xact-state-transact-sql