分散トランザクションを実行したいので 、2フェーズコミットプロトコルが必要です 。
通常どおり両方のデータベースでトランザクションを開始しますが、それらをコミットする代わりに、実行します
PREPARE TRANSACTION 'some_name';
これにより、コミット中に失敗する可能性のあるすべてが実行され、トランザクションが永続化されます。それが成功したら、両方のデータベースで以下を実行します。
COMMIT PREPARED 'some_name';
トランザクションをコミットします。
PREPARE TRANSACTION
中に何かが失敗した場合 、次のコマンドを実行して、準備済みのトランザクションを削除します。
ROLLBACK PREPARED 'some_name';
必要であることに注意してください 準備されたトランザクションを使用する場合はtransacrionmanagerソフトウェア。これにより、クラッシュやその他の予期しない問題の後に取り残された準備されたトランザクションが確実にクリーンアップされます。コミットまたはロールバックされていない準備済みのトランザクションは永久に残り、絶対的に確実にデータベースを破壊します。