我们正在 PostgreSQL 上使用 Java/Spring/Hibernate 实现一个新系统。一旦对表中的记录进行修改/删除,该系统需要制作每条记录的副本。稍后,报告将查询审计表以向用户显示数据。
我计划通过在表上设置一个触发器来实现此审计/版本控制功能,这将使修改后的行(已删除的行)“TO”一个名为 ENTITY_VERSIONS 的表,该表将有大约 20 个名为 col1、col2 的列, col3, col4 等将存储上表中的列;然而,问题是如果有超过 1 个表要版本化并且只有 1 个 TARGET 表(ENTITY_VERSIONS)来存储所有表的版本,我该如何设计 TARGET 表?
或者每个需要版本控制的表都有一个 VERSION 表的副本会更好吗?
如果可以共享用于实现审计/版本控制的一些指向 PostgreSQL 触发器(和相关的存储过程)代码的指针,那将是一个额外的好处。
PS:我查看了在 SQL Server 中实施审计表的建议?有点像答案,除了我不知道 OldValue 和 NewValue 应该是什么类型?
PPS:如果表使用 SOFT DELETEs(幻像删除)而不是 HARD 删除,你的建议有什么改变吗?