我有一个MySQL数据库,我存储从PHP网页输入的信息。我有一个页面,允许用户查看现有行,并进行更改并将其保存到数据库。我想知道保留原始条目的最佳方式,以及新更新和任何后续更新。
我的想法是创建一个与第一列具有相同列的新表,并附加一个时间戳字段。当用户提交更新时,脚本将获取主表行的内容,并在完成后使用时间戳将其输入到存档表中,然后在主表中输入新值。我还要在主表中添加一个新字段,以指定是否曾编辑过该行。
这样,我可以查询主表并获取最新数据,我还可以查询存档表以查看更改历史记录。这是实现这一目标的最佳方式,还是有更好的方法?
答案 0 :(得分:0)
您可以在更新,删除或插入时使用触发器来跟踪所有更改,是谁以及何时更改。
答案 1 :(得分:0)
查找数据库审计表。有几种方法,我喜欢active
列,当你'删除'或'更新'并且插入新记录时,它被设置为0。它确实令人头疼,进行独特的密钥检查。我使用的替代方案是你提到的那个,一个单独的表。
正如buckbova所提到的,您可以使用触发器在“删除”或“更新”上执行辅助插入。否则,如果您没有这种能力,请在PHP代码中进行管理。
答案 2 :(得分:0)
您不需要第二张桌子。只需在每一行上有一个开始和结束日期。没有结束日期的行是活动记录。我已经使用这种方法构建了整个系统,只要你索引日期字段,它就会非常快。
检索当前记录时,AND end_date IS NULL
条款会添加WHERE
。
答案 3 :(得分:0)
在这种情况下,我建议您在添加几列之后考虑一个表中的所有属性: