在客户CMS中,客户可以更新其个人信息,例如更改其地址和姓/名。我使用mysql UPDATE
查询。
这样的工作问题是,人们可以改变他们的信息。例如。将其姓名从john doe
更改为asdfdas
。我想保存他们的旧信息。
我有什么选择?这样做的最佳方式是什么?
答案 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