2013-04-30 76 views
1

我需要跨數據庫同步兩個表,無論何時更改,更新,刪除或插入。表格不一樣。同步兩個表,最佳實踐

到目前爲止,我所能找到的最簡單最好的解決方案是添加SQL觸發器。

我慢慢開始添加,似乎工作正常。但在繼續完成之前,我想確定這是一個好主意嗎?一般而言,良好的做法。

如果不是,這種情況下更好的選擇是什麼?

預先感謝您

問候 丹尼爾。

回答

0

觸發器將工作,但有很多不同的選項可供考慮。

是否通過存儲過程完成了對這些表的所有數據修改?如果是這樣,請考慮將邏輯放在存儲過程中而不是觸發器中。

更新必須是實時的嗎?如果不是,請考慮定期同步表而不是觸發器的作業。不過,這可能會因刪除而變得棘手。不是不可能的,只是棘手。

我們有一種情況,表格非常相似,但列名或訂單略有不同。在這種情況下,我們創建了一個視圖,讓原始表讓應用程序使用視圖而不是表的第二個副本。我們還能夠使用同義詞一次指向原始表,但這要求表結構相同。

一般來說,很多人試圖避免不必要的觸發器,因爲在數據庫中進行其他工作時,他們太容易錯過了。這並不會讓他們失望,但在嘗試解決問題時可能會導致有趣的時刻。

在您的場景中,我可能會在繼續使用觸發器之前簡要探討其他選項。只要注意級聯觸發效果,其中一次更新導致第二個表更新,將更新傳遞迴第一個表,然後第二個等。您可以通過嵌套級別來防止這一點。否則,你會冒着碰到最大遞歸級別並拋出錯誤的風險。