database - 数据历史跟踪最佳实践

标签 database audit-tables

我们需要跟踪某个表在一段时间内的数据修改。我们需要一些关于如何完成这项任务的建议。我们心中有两条街要走。 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/

相关文章:

mysql - 删除某些列中可能具有空值的特定行

mysql - SQL 选项存储和引用

oracle - "audit create session by session"与 "audit create session by access"?

sql-server - 关于最大限度地减少 MS SQL Server 中仅附加表上的锁定的建议?

mysql - 如何设计具有撤消重做功能的 SQL 数据库?

mysql - 如何从 MySQL 表中获取同一 ID 的最新时间戳记录?

javascript - NodeJS客户端中MongoDB中的BulkWriteError

sql - 从 3 个数据库表中获取数据

python - Web2Py 最小用户身份验证(仅限用户名)

database - SQL Server 2005 审计