私は単純な 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 |
+------+------------+-------------------------------------------------------------+--------------+
(古い変更されたデータを含む右側の新しい列に注目してください。)
一度に複数の値が変更されると、これが難しくなる可能性があることは理解していますが、どこを見ればよいかについてのガイダンスは素晴らしいでしょう. ありがとう!