私は2つのトランザクションスコープを持っています。内部トランザクションスコープがコミットされ、外側のトランザクションスコープが完了しなかった場合にロールバックされるかどうかを知りたいです。外部トランザクションスコープが完了していない場合、内部トランザクションスコープはロールバックされますか?
答えて
これらはネストされているため、内部トランザクションはロールバックされます。
これはすべての話ではなく、ネストされたトランザクションの作成方法によって異なりますが、デフォルトではロールバックされます。
This articleは、深さが約TransactionScope
になり、ほとんどの質問に回答する必要があります。
配布されているかどうかは関係ありません。
これは、ネストされたトランザクションスコープを開始するスコープオプションによって異なります。
デフォルトオプションTransactionScopeOption.Required
を使用すると、ネストされたスコープは外側のスコープと同じトランザクションに参加し、外側のスコープがロールバックするときに内側のスコープもComplete
を呼び出した場合でもロールバックされます。
ただし、TransactionScopeOption.RequiresNew
を使用すると、ネストされたスコープは独自のトランザクションを開始し、外側スコープとは別に完了するため、外側スコープがロールバックされてもロールバックされません。
TransactionScopeOption.Suppress
を使用すると、ネストされたスコープは外部トランザクションに参加せず、非トランザクションで完了するため、外部トランザクションがロールバックされた場合にロールバックされる作業の一部を形成しません。
完璧な答え:) –
- 1. トランザクションスコープまたはIDbTransaction
- 2. ネストされたトランザクションスコープのタイムアウト
- 3. トランザクションスコープ機能
- 4. Jarsignerが内部コマンドまたは外部コマンドとして認識されない
- 5. 'svn'が内部コマンドまたは外部コマンドとして認識されない
- 6. 'rails'が内部コマンドまたは外部コマンドとして認識されない
- 7. javacが内部コマンドまたは外部コマンドとして認識されない
- 8. 「G ++ - DW2」は、内部または外部コマンドとして認識されない、
- 9. WCFとNHibernateのトランザクションスコープ
- 10. GCC /コマンドプロンプトエラー: '。'内部または外部のコマンドとして認識されない
- 11. フォームが完了していない場合はjquery
- 12. トランザクションスコープがサブソニックのSQLiteで動作しない
- 13. 内部例外のプロパティが破棄されていますか?
- 14. 外部クラスのメソッドで内部クラスが宣言されている場合、内部クラスのインスタンスを初期化する方法はありますか?
- 15. トランザクションスコープを実装する
- 16. 外部参照がない場合は行を削除するか、それ以外の場合は更新
- 17. 3つのロケーションのトランザクションスコープ
- 18. 外部コマンドが完全に実行されない - Java
- 19. イオンが内部または外部コマンド実行可能プログラムまたはバッチファイルとして認識されない
- 20. "java.exe"が内部または外部コマンド、実行可能プログラムまたはバッチファイルとして認識されない
- 21. なぜnhibernate LINQは簡単な外部結合をサポートしていません(外部結合テーブルにwhere句が指定されています)。
- 22. 完全に再帰的なチェックアウトには外部が含まれています
- 23. 内部例外のない未知の例外がスローされますか?
- 24. Rubyを使用したSass - 'C:\ Program'が内部コマンドまたは外部コマンドとして認識されない
- 25. python/djangoのスレッド間でトランザクションスコープを共有していますか? (PostgreSQL)
- 26. リンクが内部か外部かを確認してください。
- 27. 完全な外部結合 - Linq to SQL
- 28. mvnコマンドが内部コマンドまたは外部コマンドとして認識されない
- 29. "ruby.exeが内部または外部のコマンドとして認識されない" Windows 7
- 30. makeが内部コマンドまたは外部コマンドとして認識されない - Qt SDK - Windows
@Frantisekは分散トランザクションについて言及しました。どのように私は分散トランザクションを使用して知っていますか? – Tebo
私は間違っていたと思う。 TransactionScopeを使用すると、おそらくdtcは必要ありません。このhttp://msdn.microsoft.com/en-us/library/ms172152(v=vs.90).aspxを参照してください: "ネストされたスコープは、ルートスコープのアンビエントトランザクションに参加できますが、ネストされたスコープでCompleteを呼び出しますルートスコープに影響を与えません。ルートスコープから最後の入れ子スコープまでのすべてのスコープがトランザクションをコミットする場合にのみ、トランザクションはコミットされます。 –
あなたはこれについて知っていると確信していますが、実際にネストされたトランザクションはなく、ネストされたTransactionScopesだけであるため、「内部トランザクション」と「ネストされたトランザクション」という用語はIMHOは不適切です。 TransactionScopeOption.Requiredを選択すると1つの大きなトランザクションになり、TransactionScopeOption.RequiresNewには2つの完全に独立したトランザクションがありますが、(閉じた)ネストされたトランザクションの意味でネストされません。 –