1

在客户 CMS 中,客户可以更新他们的个人信息,例如更改他们的地址和名字/姓氏。我为此使用 mysqlUPDATE查询。

像这样工作的问题是人们可以更改他们的信息。例如,将他们的名字从 更改john doeasdfdas。我想保存他们的旧信息。

我有哪些选择?做这个的最好方式是什么?

4

5 回答 5

1

假设用户有一个唯一的 ID,您可以有一个old_user_information表,并且当您进行更新时,还会在该表中创建一个新条目。该表将具有自动生成的 ID 以及唯一的用户 ID 和其余用户过去的信息。

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

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

于 2012-07-31T16:31:43.880 回答
1

您可以制作包含此类内容的表格

`yourTableID, field, value, date`

并用触发器更新它。您编写一个update触发器,如果​​旧值被更改,它会添加它。在此处查看手册以了解有关触发器的更多信息。

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

为了方便检索发生的事情,您可能需要添加“oldvalue”和“newvalue”之类的内容,但实际上并不需要后者,因为它在下一次更新中作为“旧”值,或者它是当前值。

于 2012-07-31T16:31:45.690 回答
0

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

更新时,将旧信息移入prior_to_update_column

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

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

于 2012-07-31T16:32:02.017 回答
0

添加一个额外的字段名称版本并使用插入而不是更新

于 2012-07-31T16:32:56.307 回答
-2

あの回答えのとうりに、やってない。 UPDATE table nameSET column= column+'new value' WHEREcondition

于 2015-03-03T13:42:44.873 回答