2011-07-12 52 views
4

我們需要跟蹤某些表上的數據修改時間。我們需要一些關於如何完成這項任務的建議。我們有兩條街在我們心中。 1)創建一個包含以下記錄的表格:用戶ID,日期修改,表名,字段名,字段類型,字段值。這樣,我們將用觸發器來跟蹤。數據歷史記錄跟蹤最佳實踐

2)在我們需要的所有表格上添加一個狀態字段,以跟蹤名爲Status的歷史記錄。該字段將具有以下值:I =已插入 - D =已刪除 - M =用相對日期修改修改。通過這種方式,我們總是可以知道最新的有效行和所有以前的數據修改。 3)它在你的腦海中 你有什麼建議?

回答

3

我已經在PostgreSQL上多次使用單獨的「歷史」模式和觸發器完成了這個操作。

「歷史」模式中的表格與真實表格相同,但添加了history_id PK和事件時間戳記。來自「歷史」模式的表沒有任何限制。如果您還需要跟蹤刪除,則還需要創建用於操作的字段。

在PostgreSQL,你可以使用這種CREATE聲明輕鬆地創建這種表:

CREATE TABLE history.tbl AS 
    (history_id BIGSERIAL PRIMARY KEY, 
    event_time TIMESTAMP DEFAULT NOW(), 
    action CHAR(1), 
    LIKE public.tpl); 

這個你應該創建觸發器,它會插入到歷史表上插入後,更新,刪除。