在客户 CMS 中,客户可以更新他们的个人信息,例如更改他们的地址和名字/姓氏。我为此使用 mysqlUPDATE
查询。
像这样工作的问题是人们可以更改他们的信息。例如,将他们的名字从 更改john doe
为asdfdas
。我想保存他们的旧信息。
我有哪些选择?做这个的最好方式是什么?
假设用户有一个唯一的 ID,您可以有一个old_user_information
表,并且当您进行更新时,还会在该表中创建一个新条目。该表将具有自动生成的 ID 以及唯一的用户 ID 和其余用户过去的信息。
用户可以在此表中有多行,但在实际表中只有一行Users
。
编辑:如果我是你,我会编写一个存储过程来完成这两件事,以便在事情发生变化时更容易管理。
您可以制作包含此类内容的表格
`yourTableID, field, value, date`
并用触发器更新它。您编写一个update
触发器,如果旧值被更改,它会添加它。在此处查看手册以了解有关触发器的更多信息。
如果您不想使用触发器,您显然可以在逻辑中执行相同的操作:只需使用旧值更新历史记录表。但这需要一些技巧来确定是否需要更新它,但没有什么复杂的。
为了方便检索发生的事情,您可能需要添加“oldvalue”和“newvalue”之类的内容,但实际上并不需要后者,因为它在下一次更新中作为“旧”值,或者它是当前值。
为正在更新的数据创建新列column
将是prior_to_update_column
更新时,将旧信息移入prior_to_update_column
如果用户再次更新,则附加到prior_to_update_column
分隔符,
(看起来像一个数组)。
这应该保留用户更新的所有先前信息
添加一个额外的字段名称版本并使用插入而不是更新
あの回答えのとうりに、やってない。 UPDATE table name
SET column
= column
+'new value' WHEREcondition