数据历史跟踪最佳实践

时间:2011-07-12 10:26:24

标签: database audit-tables

我们需要在某些表上跟踪数据修改。我们需要一些关于如何完成这项任务的建议。我们脑子里有两条街道。 1)创建一个包含以下记录的表:userid,date modification,table name,fieldname,fieldtype,fieldvalue。通过这种方式,我们将使用触发器进行跟踪。

2)在我们需要跟踪名为Status的历史记录的所有表上添加一个州字段。该字段将具有以下值:I =已插入 - D =已删除 - M =已修改,具有相对日期修改。通过这种方式,我们始终可以知道最新的有效行和所有以前的数据修改 3)在你的脑海里 你有什么建议?

1 个答案:

答案 0 :(得分: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);

在此之后你应该创建一个触发器,它将在插入,更新,删除时插入到历史表中。