1

顧客 CMS では、顧客は住所や姓名の変更など、個人情報を更新できます。そのためにmysqlUPDATEクエリを使用します。

このような作業の問題点は、人々が自分の情報を変更できることです。たとえば、名前を からjohn doeに変更しasdfdasます。彼らの古い情報を保存したいと思います。

私のオプションは何ですか?これを行う最善の方法は何ですか?

4

5 に答える 5

1

ユーザーが一意の ID を持っていると仮定すると、old_user_informationテーブルを持つことができ、更新を行うときにそのテーブルにも新しいエントリを作成できます。テーブルには、自動生成された ID と、一意のユーザー ID および残りのユーザーの過去の情報が含まれます。

ユーザーはこのテーブルに複数の行を持つことができますが、実際のUsersテーブルには 1 つの行しかありません。

編集: もし私があなただったら、これらの両方を実行するストアド プロシージャを作成して、変更があった場合に管理しやすくします。

于 2012-07-31T16:31:43.880 に答える
1

このようなものを含むテーブルを作成できます

`yourTableID, field, value, date`

これをトリガーで更新します。update古い値が変更された場合にそれを追加するトリガーを作成します。トリガーの詳細については、こちらのマニュアルを参照してください。

トリガーを使用したくない場合は、明らかにロジックで同じことを行うことができます。履歴テーブルを古い値で更新するだけです。ただし、更新する必要があるかどうかを判断するには、いくつかのトリックが必要ですが、複雑なことは何もありません。

何が起こったのかを簡単に取得するには、「oldvalue」と「newvalue」のようなものを追加したいかもしれませんが、後者は実際には必要ありません。「古い」値として次の更新に含まれているか、現在の値であるためです。

于 2012-07-31T16:31:45.690 に答える
0

フィールド名のバージョンを追加し、更新の代わりに挿入を使用します

于 2012-07-31T16:32:56.307 に答える
0

column更新されるデータの新しい列を作成します。prior_to_update_column

更新時に、古い情報をに移動しますprior_to_update_column

ユーザーが再度更新する場合は、 (配列のように見えるように)でprior_to_update_column区切られたものに追加します。,

これにより、ユーザーが更新した以前の情報がすべて保持されます

于 2012-07-31T16:32:02.017 に答える
-2

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

于 2015-03-03T13:42:44.873 に答える