2011-09-30 17 views
1

我有兩個數據庫。我想保持一張桌子同步。我們稱之爲用戶表。 當使用觸發器更改表中的一行時,我需要更新第二個數據庫並以其他方式進行更新。db觸發器有更好的選擇嗎?

  • 這是安全嗎?
  • 有沒有更好的方法來做到這一點?

這不是一個直接的PHP/PostgreSQL的問題,但我使用它們,所以一個特定的答案可能會有所幫助。

+0

你能替換其中一個表的視圖嗎?這樣只有一個表存在(完全同步)。其他答案可能取決於更改和同步之間允許的延遲,當某些秒數可以接受時,您可能會更好地使用同步作業每n秒檢查一次。 –

+0

觸發器無法寫入不同數據庫的表中。因此,即使這兩個數據庫位於同一物理服務器上,您也需要使用像Slony這樣的東西。 –

+0

我已經使用dblink完成了,所以它不是一個大問題,我只是不喜歡這個概念。 – danidacar

回答

1

這種工作方式很好,在一個方向上,實際上是怠慢複製引擎工作的方式。在兩個方向走並不是很多。你可以在屁股上做什麼,有兩張桌子,一張是朝着每個方向的,另一張是兩張桌子的視圖,這兩張桌子成爲一個凝聚視野。

+0

在觸發器內訪問不同*數據庫中的表*這是如何運作的? –

+1

好吧,如果你想瘋了,你可以使用dblink做這樣的事情,但是slony工作的方式是源數據庫將所有數據推入目標數據庫到一個日誌中,然後由一個日誌處理slon守護進程。這不是一個簡單的壯舉,我建議使用經過驗證的sl to來做這件事,而不是試圖自己推出。 –