我有兩個表(實際上是一組表),可能需要保持同步(第一組表我需要將所有數據複製到第二組,這裏的數據將是一個子集)。DB2在兩個表之間保持n列同步
如果事情爲什麼(也許是因爲它顯然是不具有複製的數據非常好形式)看到(這另一個問題下的「PS」部分最底部):DB2 update and insert trigger, references a lot of fields can I use * to shorten them (in iSeries but might not matter)
要做到這一點,我將插入,更新和刪除觸發器放在我稱之爲「主集」的位置上,它將插入,更新和刪除記錄到「複製集」上。
我的問題是,如果我現在想保持複製集與主集同步?我現在正在查看文檔以查看執行此操作的最佳方法。我不希望插入觸發器嘗試插入到最初插入的表中,因爲我期望這會導致一個錯誤,該錯誤會報告給插入的程序,除非在觸發器中有方法拋出這樣的報告?此時最好的方法看起來像檢查記錄是否存在於刪除之前,插入相同。
;那麼,遞歸上的更新觸發的問題,我想知道是否有更好的解決方案相比,該值是相同的,然後不更新檢查?
主集不能以任何方式被改變(除了其不以任何方式修改輸入/從表中輸出的觸發器),而複製的集模式是完全靈活的。
優化的lazyness(我可能會自動這些觸發器的創建,但如果你有關於如何保持他們的建議壓縮會加快我的發展)。
系統未大量使用,它的免費資源音...有一點需要保守與存儲,處理和磁盤空間。
我正在考慮你在說什麼,但它似乎違背了ORM工具的五穀。他們有自己的解耦關注方式。我沒有把我的頭圍繞使用可更新/可刪除視圖的可行性。謝謝,我會考慮這個。 – Quaternion
如果您正在使用ORM框架(您**未提及),請完全像當前表一樣定義視圖,並讓框架引用視圖。然後,在更改底層數據庫時,更改視圖運行的select語句(以及任何必需的觸發器),但不要更改結果集 - 您的ORM映射甚至不知道其差異。 –
這似乎是最好的方式,希望我已經開始使用它。 – Quaternion