我们需要跟踪某个表在一段时间内的数据修改。我们需要一些关于如何完成这项任务的建议。我们心中有两条街要走。 1)创建一个表,记录如下:userid,修改日期,表名,fieldname,fieldtype,fieldvalue。这样,我们将使用触发器进行跟踪。
2) 在我们需要跟踪历史的所有表上添加一个状态字段,称为状态。该字段将具有以下值:I = 已插入 - D = 已删除 - M = 修改了相对日期 od 修改。这样我们总能知道最新的有效行和之前所有的数据修改 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);
在此之后,您应该创建触发器,它将在插入、更新、删除时插入到历史表中。
关于database - 数据历史跟踪最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6662743/