1

SqlTransaction クラスでネストされたトランザクションを作成することは可能ですか? もしそうなら、私が知っておく必要がある規則/制限は何ですか?

4

3 に答える 3

3

残念ながら、SQL Serverは、このMSDNの記事のように、内部トランザクションのコミットを無視します。

トランザクションをネストすることはできますが、動作が期待どおりでない場合があることに注意してください。

最も外側のトランザクションがコミットされるまで、何もコミットされません。

だから、以下では...

transaction A
Query A

transaction B
Query B

Commit B
Rollback A

クエリBの結果は、実際にはデータベースにコミットされていません。

于 2011-07-05T19:32:07.007 に答える
0

はい、ネストされたトランザクションを作成できます。

例えば:

取引A
アクション #1 を行う
取引B
アクション #2 を行う
取引C
アクション #3 を行う

ロールバック トランザクション B
トランザクション D
アクション #4 を行う
コミット トランザクション D
取引E
アクション #5 を行う

トランザクション A をコミットする

このシーケンスでは、アクション 1、4、および 5 のみが実際に発生します。ネストされたトランザクションには、私が認識しているトランザクション自体の制限以外の制限はありません。理解しなければならない唯一のことは、「最上位」(ネストの最上部) トランザクションがコミットされるまで、実際には何もコミットされないということです。

于 2011-07-05T19:16:34.713 に答える