レガシー システムと新しい光沢のあるバージョンを比較するために、サイド バイ サイド テストを実行しようとしています。レガシー システムのデータを格納する Oracle データベース テーブル A と、新しいシステムのデータを格納する同等のテーブル B があるため、テストの間、データベースは非正規化されます。(また、従来のシステムとテーブル A は固定されています - 変更は許可されていません)
私がやりたいことは、A での頻度の低い DML 操作が B に伝播できるようにすることです。これを行うためにトリガーのペアから始めましたが、トリガーが実行されるとテーブルが変更され、例外がスローされるという明らかな問題にぶつかりました。
この問題を処理する標準的な方法はありますか? dbms_scheduler を使用するかどうかについて、さまざまなレポートを読みました...
ありがとう、
アンディ
更新: 私は問題全体から抜け出し、すべてのストアド プロシージャが A を更新し、B も更新し、その逆も同様であることを確認しました。
将来同じ問題に直面した場合、彼の提案に従うため、Quassnoi の回答を承認済みとしてマークしました。
テーブルAとBに2つの挿入/更新ステートメントレベルのトリガーを追加することで簡単に機能するようになったため、JosephStyonの回答をマークアップしました。次に、実行されたトリガーに応じて、AまたはBをマスターテーブルとして使用してマージ手順を実行します(最初に、ターゲット テーブルがマージによって変更されることを確認し、そうでない場合は早期に終了します)。