Wir sind dabei, Side-by-Side-Tests durchzuführen, um ein Altsystem mit einer neuen, glänzenden Version zu vergleichen. Wir haben eine Oracle-Datenbanktabelle, A, die Daten für das Altsystem speichert, und eine entsprechende Tabelle, B, die Daten für das neue System speichert, so dass die Datenbank für die Dauer des Tests denormalisiert wird. (Das Legacy-System und die Tabelle A sind ebenfalls festgelegt. Es sind keine Änderungen zulässig.)Tabellen in Oracle synchronisieren
Ich möchte, dass die seltenen DML-Operationen auf A sich auf B ausbreiten und umgekehrt. Ich habe mit einem Paar von Triggern begonnen, um das zu tun, aber ich habe das offensichtliche Problem festgestellt, dass die Tabellen mutieren, wenn die Trigger ausgeführt werden, und eine Ausnahme ausgelöst wird.
Gibt es eine Standardbehandlung dieses Problems? Ich habe unterschiedliche Berichte lesen, ob oder nicht mit dbms_scheduler ist der Weg zu gehen ...
Danke,
Andy
Update: Ich habe chickening aus dem ganzen endete ausstellen und sicherstellen, dass alle gespeicherten Prozeduren, die A aktualisieren, auch B aktualisieren, und umgekehrt.
Ich habe Quassnois Antwort als akzeptiert markiert, weil ich seinen Vorschlägen folgen würde, wenn ich in Zukunft mit dem gleichen Problem konfrontiert werde.
Ich habe JosephStyons Antwort markiert, weil ich kurz funktionierte, indem ich zwei Insert-/Update-Anweisungsebenen-Trigger für die Tabellen A und B hinzufügte und dann seine Merge-Prozedur mit A oder B als Master-Tabelle ausführte trigger ran (obwohl ich zuerst überprüft habe, dass die Zieltabelle durch die Zusammenführung geändert wird, wenn nicht, dann wird die Zieltabelle geändert).
@Andy: Wenn Ihre Legacy-Anwendung gespeicherte Prozeduren verwendet, um die Tabellen zu aktualisieren, dann um Gottes Willen einfach Ihre Logik in die Verfahren, da es genau so ist, wie es sein sollte. Meine Ratschläge sind nur für die schlecht entwickelten Anwendungen gut, die DML-Anweisungen ausgeben (anstatt die Prozeduren aufzurufen), um die Daten zu aktualisieren. – Quassnoi