【发布时间】:2023-03-09 08:01:02
【问题描述】:
我有几张表要保留修订历史记录。实现这一目标的最佳方法是什么?这将是几个字段(20 个左右)。
我是否应该创建一个重复的表并将旧数据提交给它?我应该使用触发器吗?还是应该创建一个单独的表并只跟踪所做的更改?
【问题讨论】:
-
您要修改表格,还是修改表格中的数据?
我有几张表要保留修订历史记录。实现这一目标的最佳方法是什么?这将是几个字段(20 个左右)。
我是否应该创建一个重复的表并将旧数据提交给它?我应该使用触发器吗?还是应该创建一个单独的表并只跟踪所做的更改?
【问题讨论】:
我们对每个版本化实体使用两个表的选择非常满意。
表格看起来类似于:
表person:
person_version)表person_version:
person)person_version 中的条目永远不会更改,因此很容易缓存它们(只要没有任何对可能更改的表的引用)
【讨论】:
像Propel 这样的一些 ORM 可以“本地”处理这种频繁的需求。
它会自动将 version 列添加到“版本化”表(例如 mytable),并创建一个 mytable_version 表(肯定包含列 mytable_id 和 version)。
它提供了一个简单的 API 来查询版本化的表。例如,当您执行 $myobject->save(); 时,它会自动填充表 mytable_version 并相应地更新字段 mytable.version。
【讨论】:
这是我几个月前问过的问题,但我会再次这样做
【讨论】:
您可以在表中添加另一列来跟踪条目 ID,而活动 PK 则是修订 ID。 revision-id 最高的是最新的活动记录,其他具有相同 entry-id 的条目是以前的修订。
【讨论】: