4

我们需要在某个表上跟踪数据修改。我们需要一些关于如何完成这项任务的建议。我们有两条街道要遵循。1)创建一个表,记录如下:userid、修改日期、表名、fieldname、fieldtype、fieldvalue。这样,我们将使用触发器进行跟踪。

2)在我们需要跟踪历史的所有表上添加一个状态字段,称为状态。该字段将具有以下值:I = 插入 - D = 删除 - M = 已修改,具有相对日期和修改。这样我们总能知道最新的有效行和之前的所有数据修改 3) 就在你的脑海里  你有什么建议?

4

1 回答 1

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);

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

于 2011-07-12T10:34:36.640 回答