問題タブ [nested-transactions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - ネストされたトランザクションの合計ロールバック
私はこの Yii 用のNestedPDOソリューションが本当に気に入っていますが、別のトランザクション処理が必要です。
ネストされたすべてのトランザクションをコミットできる場合にのみ、ネストされたトランザクションをコミットしたいと思います。1 つのトランザクションがロールバックする場合は、すべてのトランザクションをロールバックする必要があります。
どうやってやるの?
機能しなかったロールバック機能を変更しようとした私の試み:
私は NestedPDO を適応させることを考えていました: 関数 commit() では、最も外側のトランザクションでのみコミットを行い、関数 rollBack() では、どのサブトランザクションがロールバックを引き起こしたかに関係なく、最も外側のトランザクションにロールバックを行います。でもやりきれなかった…。
私は MySQL と InnoDB テーブルを使用していますが、自動コミットについてはよくわかりませんが、トランザクション内で自動コミットの値をエコーするとき、常に値 1 を取得します。これは、自動コミットがオンであることを意味しますが、トランザクション内では自動コミットを 0 に設定する必要があります。これがロールバック全体が機能しない原因かどうかわかりませんか?
sql-server - SQL Server でのネストされたトランザクションに関する推奨事項
やなどの「基本操作」ストアド プロシージャがBookAVehicle
ありUnBookAVehicle
ます。どちらも取引中です。
しかし、今はもう少し複雑なストアド プロシージャが必要です: RescheduleBooking
. また、トランザクショナルである必要があります。
ここで、内部からResceduleBooking
を呼び出したいのですがBookAVehicle
、この場合、内部トランザクションをロールバックさせたくありません。
しかし、BookAVehicle
直接呼び出すときは、ロールバックを維持したいと思います。
これをエレガントに行う方法について何か提案はありますか?
パラメータとしてストアドプロシージャの名前を取り、トランザクションとパラメータストアドプロシージャへの呼び出しのみを含む「ラッパー」ストアドプロシージャを持つという行に沿って何かを考えていました。
したがって、「直接」と呼ぶときは、次のように呼び出します。
そして、別のトランザクションから呼び出すと、次のように呼び出します。
sql - ネストされたデータベース トランザクションは必要ですか?
SQL データベースにアクセスするために JDBC を使用して独自のデータ レイヤーをコーディングしています。主要コンポーネントの 1 つはトランザクション マネージャーです。
このコンポーネントでネストされたトランザクションをサポートするかどうか、少し混乱しています。ネストされたトランザクションのサンプル コードは次のとおりです。
過去の開発実験では、それらが必要になったことは一度もありませんでした。コードがより複雑になると思います。しかし、それらが役に立たないか有用かはわかりません。ネストされたトランザクションが必要な、または少なくとも有利なケースをいくつか挙げていただけますか? そして、それらの長所と短所は何ですか?
質問を明確にし、トランザクションの意味を説明するために、コメントを以下に貼り付けました。
私はJDBCを使用しています。そのため、トランザクション マネージャーは基盤となるデータベースから独立しています。トランザクションとは、autoCommit 以外の JDBC 接続を意味します。トランザクション マネージャは、非 autoCommit 接続でトランザクション オブジェクトを返します。このトランザクションを使用するクライアント コードは、トランザクション オブジェクトをコミットすることにより、接続をコミットして閉じます。
前もって感謝します。
sql-server-2012 - Web サーバーと共にデータベース サーバーで MSDTC サービスを開始する必要がありますか? また、ミラーリングサーバーでも実行する必要がありますか?
私のプロジェクトはネストされたトランザクションをサポートしているため、Web サーバーとデータベース サーバーで MSDTC サービスを実行しています。プロジェクトは正常に動作しています。ただし、データベース サーバー上にデータベース ミラーリングが確立されているため、フェールオーバーが発生するたびに、ネストされたトランザクションが使用されているサイト ページでエラーがスローされます。
操作は、トランザクションの状態に対して無効です。
ミラーリング データベースでも MSTDC サービスを実行しています。この問題を克服するために何をすべきかを提案してください。
hibernate - Hibernate のネストされたトランザクション / セッションおよびプロキシ アソシエーション
サーバー側で常に開いているトランザクションが存在するように、トランザクションを処理するために hibernate 4 と spring-aop を使用しています。
ネストされたトランザクションを作成して分離して動作させたいのですが、次のエラーが表示されます: プロキシを 2 つの開いているセッションに関連付ける試みが不正です。以下の例を参照してください。
永続化されたエンティティ e1 からのデータで作成され、ネストされたトランザクションに保存されたエンティティ e2。E1 には、完全に初期化されていないディープ グラフがあります。
例外をスローせずに e2 を作成する正しい方法は何でしょうか?
スキームの例:
コード例:
[https://github.com/cemartins/test-cases]で詳細なテスト ケースを含む Maven プロジェクト。
grails - Grails ネストされたトランザクション Bean のリセット
Oracle 11g と一緒に grails 1.3.7 を使用し、内部トランザクションを管理しようとしています。いくつかの変更を行うトランザクション(Propagation.REQUIRED)サービス メソッドに渡される Bean Person があります。次に、別のトランザクション(propagation = Propagation.REQUIRES_NEW)メソッドに渡され、別の変更が加えられて例外がスローされます。私が期待していたのは、2 番目のサービスのすべての変更がロールバックされることですが、最初のサービスの変更はまだ有効です。これは状況です:
次に、grails コンソールを実行し、終了後に DB を確認します。...
Propagation.NESTED をブートストラップでアクティブ化した後transactionManager.setNestedTransactionAllowed(true)
、このポスト
grails トランザクション セット セーブポイントのようにセーブポイントを使用して使用しようとしました
が、それでも同じ結果が得られました。
何が欠けていますか????
前もって感謝します。
java - Spring トランザクション: requires_new を含むメソッドが requires を含むメソッドから呼び出される
メソッドの呼び出しと呼び出しに対して異なる分離レベルを持つネストされたトランザクションの場合、正確にコミットがいつ発生し、正確にロールバックがいつ発生するかを理解したいと思います。
たとえば、2 つのスプリング サービスがあり、service1 の method1 から service2 の method2 を呼び出しています。
以下のプログラムに示すように、Method1 には REQUIRED トランザクション スコープがあり、Method2 には REQUIRES_NEW トランザクション スコープがあります。
今私の質問は、私が理解しているように、REQUIRES_NEW は新しいトランザクションを開始しますが、既存の method2 ですぐにコミットしますか、それともメソッド 1 が完了するまでスプリングが待機してからコミットしますか?
どの時点でコミットが発生し、メソッド 2 で保持されている DB の行ロックが解放されるかに興味があります。
注: ここでは、Spring がネストされたトランザクションを実現できるように、両方のメソッドを異なるサービスに配置しました。
前もって感謝します、
バリ
sql-server - ネストされたストアド プロシージャのネストされたトランザクション
実際、ストアド プロシージャでネストされたトランザクションを使用することについて、少し混乱しました。1 つのメイン プロシージャで 2 つまたは 3 つのプロシージャを呼び出す必要があります。
例えば:
私は正しい方法でそれをやっていますか?