0

私は単純な PHP Web サイトを持っており、現在、すべての MySQL データベース クエリを「ログ」テーブルに記録しているため、いつ、誰によってどのような変更が行われたかが記録されます。問題は、更新クエリと削除クエリのすべてで、古い値がログに記録されないことです。

更新または削除された古い値を返す簡単な方法はありますか? クエリ文字列の解析を始めましたが、面倒で複雑で、単に間違っているようです。

これが私がやりたいことの例です: 実行されているクエリが次の場合:

UPDATE members SET email='joe@this.com' WHERE memberId=123;

現在、次のようなテーブルを記録しています。

+------+------------+-------------------------------------------------------------+
| User | Date       | Query                                                       |
+------+------------+-------------------------------------------------------------+
| joe  | 2013-03-29 | UPDATE members SET email='joe@this.com' WHERE memberId=123; |
+------+------------+-------------------------------------------------------------+

テーブルを次のようにしたい:

+------+------------+-------------------------------------------------------------+--------------+
| User | Date       | Query                                                       | Old Values   |
+------+------------+-------------------------------------------------------------+--------------+
| joe  | 2013-03-29 | UPDATE members SET email='joe@this.com' WHERE memberId=123; | joe@that.com |
+------+------------+-------------------------------------------------------------+--------------+

(古い変更されたデータを含む右側の新しい列に注目してください。)

一度に複数の値が変更されると、これが難しくなる可能性があることは理解していますが、どこを見ればよいかについてのガイダンスは素晴らしいでしょう. ありがとう!

4

1 に答える 1

0

あなたが私があなたをどう思っているかを尋ねているなら、いいえ、あなたはできません. データが置き換えられたり削除されたりすると、その種類は永遠に失われます。

これを真剣にやりたい場合は、データのバージョンを保持し、新しい更新カウンターまたは何かを設定する挿入のみを行う必要があり、それは本当に楽しいことではありません。

于 2013-03-30T02:03:33.173 に答える