我们需要在某些表上跟踪数据修改。我们需要一些关于如何完成这项任务的建议。我们脑子里有两条街道。 1)创建一个包含以下记录的表:userid,date modification,table name,fieldname,fieldtype,fieldvalue。通过这种方式,我们将使用触发器进行跟踪。
2)在我们需要跟踪名为Status的历史记录的所有表上添加一个州字段。该字段将具有以下值:I =已插入 - D =已删除 - M =已修改,具有相对日期修改。通过这种方式,我们始终可以知道最新的有效行和所有以前的数据修改 3)在你的脑海里 你有什么建议?
答案 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);
在此之后你应该创建一个触发器,它将在插入,更新,删除时插入到历史表中。