Mysql更新但保留旧数据?

时间:2012-07-31 16:27:42

标签: php mysql

在客户CMS中,客户可以更新其个人信息,例如更改其地址和姓/名。我使用mysql UPDATE查询。

这样的工作问题是,人们可以改变他们的信息。例如。将其姓名从john doe更改为asdfdas。我想保存他们的旧信息。

我有什么选择?这样做的最佳方式是什么?

5 个答案:

答案 0 :(得分:1)

假设用户拥有唯一ID,您可以拥有old_user_information表,当您进行更新时,也会对该表执行新的输入。该表将具有自动生成的ID以及唯一的用户ID以及其余用户的过去信息。

用户可以在此表中有多行但在真实Users表中只有一行。

编辑:如果我是你,我会编写一个存储过程来执行这两项操作,以便在事情发生变化时更容易管理。

答案 1 :(得分:1)

您可以创建包含此类内容的表

`yourTableID, field, value, date`

并使用触发器更新此项。您编写了一个update触发器,如果​​更改了该值,则会添加旧值。查看at the manual here以了解有关触发器的更多信息。

如果您不想使用触发器,您显然可以在逻辑中执行相同操作:只需使用旧值更新历史记录表。但这需要一些技巧来找出如果你需要更新它,但没有什么可复杂的。

为了便于检索发生了什么,您可能想要添加类似“oldvalue”和“newvalue”的内容,但后者并不是真正需要的,因为它要么在下次更新中作为“旧”值,要么就是当前价值。

答案 2 :(得分:0)

为正在更新的数据创建新列column将为prior_to_update_column

在更新时,将旧信息移至prior_to_update_column

如果用户再次更新,请附加到由prior_to_update_column分隔的,(看起来像一个数组)。

这应该保留用户更新的所有先前信息

答案 3 :(得分:0)

添加其他字段名称版本 并使用Insert而不是update

答案 4 :(得分:-1)

あの答えのとうりに,やってない。 更新table name设置column = column +'新值'在哪里condition