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

标签 database postgresql versioning audit database-versioning

我们正在 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 删除,您的建议有任何改变吗?

最佳答案

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

This link在 Postgres 文档中显示了 Postgres 中的一些审计触发器示例。

关于database - 如何在 PostgreSQL 上实现表修改的审计/版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3186400/

相关文章:

php - jquery/php/mysql 采购订购系统需要帮助

database - 有一个对象键值图或文档映射解决方案可供使用

c++ - Qt 数据库模块是否支持通过网络连接远程数据库?

sql - 如何使用字段名称作为嵌套 select 语句的参数

带有比较谓词的 PostgreSQL 排除约束

postgresql - iReport 设计器 : permission denied for relation

node.js - node.js 版本号如何工作以及如何确保兼容性?

c# - 如何在 C# Compact Framework 中获取 exe 应用程序名称和版本

docker - 正确对 Docker 镜像进行版本控制

mongodb - Mongo_mapper 限制结果