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