我們即將運行並行測試,以將舊版系統與新版本進行比較。我們有一個存儲遺留系統數據的Oracle數據庫表A和一個存儲新系統數據的等效表B,所以在測試期間數據庫是非規範化的。 (另外,遺留系統和表A是固定的 - 不允許更改)在Oracle中保持表的同步
我想要做的就是讓A上不經常的DML操作傳播到B,反之亦然。我從一對觸發器開始執行此操作,但觸發了一個顯而易見的問題,即觸發器運行時,表格會發生變化,並引發異常。
有沒有處理這個問題的標準方法?我讀過關於使用DBMS_SCHEDULER是否是要走的路不同的報告...
感謝,
安迪
更新: 我已經結束了chickening出了整個的問題並確保更新A的所有存儲過程也更新B,反之亦然。
我標誌着Quassnoi的答案接受,因爲我按照他的建議,如果面臨着在未來同樣的問題。
我已經標記了JosephStyon的答案,因爲我簡單地通過在表A和B上添加兩個插入/更新語句級觸發器,然後使用A或B作爲主表進行合併,這取決於哪個觸發器運行(雖然首先我檢查了目標表將被合併更改,如果沒有提前出現)。
@Andy:如果你的遺留應用程序使用存儲過程來更新表,那麼爲了上帝的緣故,你只需把你的邏輯放入過程中,因爲它應該是這樣。我的建議只適用於發佈DML語句的較差的應用程序(而不是調用過程)來更新數據。 – Quassnoi 2009-06-08 19:49:26