【发布时间】:2011-03-12 07:30:48
【问题描述】:
我们正在 PostgreSQL 上使用 Java/Spring/Hibernate 实现一个新系统。一旦对表中的记录进行修改/删除,该系统需要制作每条记录的副本。稍后,报告将查询审计表以向用户显示数据。
我计划通过在表上设置一个触发器来实现此审计/版本控制功能,该触发器会将修改后的行(已删除的行)复制到一个名为 ENTITY_VERSIONS 的表中,该表将包含大约 20 个名为col1、col2、col3、col4 等将存储上表中的列; 但是,问题是如果有超过 1 个要版本化的表,并且只有 1 个 TARGET 表(ENTITY_VERSIONS)来存储所有表的版本,我该如何设计 TARGET 表?
或者对于需要版本控制的每个表都有一个 VERSION 表的副本会更好吗?
如果可以共享一些指向 PostgreSQL 触发器(和相关的存储过程)代码以实现审计/版本控制的指针,那将是额外的奖励。
P.S:我查看了Suggestions for implementing audit tables in SQL Server?,有点像答案,只是我不知道 OldValue 和 NewValue 应该是什么类型?
P.P.S:如果表使用 SOFT DELETE(幻像删除)而不是 HARD 删除,您的建议是否有任何更改?
【问题讨论】:
标签: database postgresql versioning audit database-versioning