2010-01-13 91 views
2

我目前正在研究一個項目,在項目中我必須跟蹤在關係數據庫中修改過的元組。這應該包括更新的元組,但也插入和刪除元組。我的問題是完成這個的最好方法是什麼?我有我自己的一些想法,但也許有更容易/更好的方法,我沒有想到,或者已經存在一個完全這樣的項目。跟蹤數據庫中修改過的元組的最佳方式是什麼?

該項目的最終目標是,將不同廠家的關係數據庫工作,但第一個實現將使用MySQL數據庫。其他數據庫系統可以稍後支持。但如果適用於MySQL的解決方案可以很容易地適用於其他數據庫,那將會很不錯。

我的第一個想法是解析日誌文件。但是,我不確定這些日誌文件是否包含實際的修改過的元組,並且我可以想象這些日誌文件並不總是可用的(例如在共享主機上)。

我的第二個想法是在應用層面攔截查詢。當執行INSERT,DELETE或UPDATE查詢時,可以解析這些查詢,並且可以事先確定它們會影響的元組。對於INSERT操作,這只是插入的元組,對於DELETE或UPDATE操作,元組可以通過在新的SELECT語句中應用WHERE子句來標識。

作爲最後一句話我想補充一點,表現並不在這個階段發展的重要因素。

如果需要更多的細節,我很高興向他們提供。

+0

您是否在尋求關於如何記錄關係數據更改的建議?如果是這樣,這是重複多次 - 嘗試搜索「審計記錄」。例如,請參閱http://stackoverflow.com/questions/2015232/database-design-for-audit-logging和http://stackoverflow.com/questions/1439173/enterprise-data-auditing。 – 2010-01-13 15:54:22

回答

2

使用觸發器來捕獲INSERT,UPDATE和DELETE和日誌條目到新表。您可以使用該表上的時間戳來記錄事務發生的時間。將來您可以查詢該表以獲取修改信息。

0

這將需要一些數據庫相關的功能,但你可以封裝它們取決於你的架構,但你可以使用數據庫觸發器,我通常建議不要除了這事,審計。在每種類型的觸發器中,只需向任何需要的信息寫入日誌表即可。只是一個建議。

相關問題