如何在PostgreSQL上实现表修改的审计/版本控制

anj*_*anb 7 database versioning postgresql audit database-versioning

我们在PostgreSQL上使用Java/Spring/Hibernate实现了一个新系统.一旦对表中的记录进行修改/删除,该系统就需要制作每个记录的副本.稍后,Reports将查询审计表以向用户显示数据.

我计划通过在表上创建一个触发器来实现这个审计/版本控制功能,这个触发器会将修改后的行(已删除的行)"TO"复制到一个名为ENTITY_VERSIONS的表中,该表将包含大约20个名为col1,col2的列,col3,col4等,它们将存储上表中的列; 但是,问题是如果要存储多个表并且只有1个TARGET表(ENTITY_VERSIONS)来存储所有表的版本,我该如何设计TARGET表?

或者,对于每个需要版本控制的表,是否会有一个复制表的版本?

如果可以共享用于实现审计/版本控制的PostgreSQL触发器(和相关的存储过程)代码的一些指针,那将是额外的.

PS:我查看了在SQL Server中实现审计表的建议?并且有点像答案,除了我不知道OldValue和NewValue应该是什么类型的?

PPS:如果表使用SOFT DELETE(幻像删除)而不是HARD删除,那么您的任何建议都会改变吗?

rfu*_*sca 4

我将拥有每个表的副本来保存您希望保留的该表的版本。维护和使用全局版本控制表听起来有点像一场噩梦。

Postgres 文档中的此链接显示了 Postgres 中的一些审核触发器示例。