如何在MySQL中保留记录更新的历史记录?

2022-08-30 16:07:54

我必须在PHP中创建一个代码,该代码将允许我在MySQL数据库中保留记录更新的历史记录,以便我可以按日期找到旧版本。

以下是我真正想要实现的示例:http://en.wikipedia.org/w/index.php?title=Tunisia&action=history

数据主要是我们记录的有关公司的数字,以生成报告并提取索引。

我计划使用codeigniter,因为它很简单,我正在寻找一个关于框架或开源项目的想法,它们使用相同的方法来保留数据库中的修改历史记录。


答案 1

最简单的解决方案(取决于您的特定需求)可能是向表中添加一个更新/插入/删除触发器,这样您就可以在插入/更新/删除数据时执行额外的日志记录。这样,即使对数据库的手动干预也将得到覆盖...

有关详细信息,请查看 http://dev.mysql.com/doc/refman/5.1/en/triggers.html


答案 2

保留版本历史记录的一种简单方法是创建一个基本相同的表(例如,带有_version后缀)。这两个表都有一个版本字段,对于主表,每次进行更新都会递增该字段。版本表将在 上具有复合主键。(id, version)

每当对实际表执行更新时,还会在版本表中插入一个包含重复数据的新行。每当您想要查找版本历史记录时,您需要做的就是诸如.SELECT * FROM content_version WHERE id = CONTENT_ID ORDER BY version

如果您使用类似 Doctrine ORM 之类的东西,则它具有通过事件侦听器自动为您执行此操作的行为。你可以在这里查看:http://www.doctrine-project.org/documentation/manual/1_2/en/behaviors#core-behaviors:versionable


推荐