これは、Web アプリケーションでは非常に一般的なことです。ユーザー テーブルがあり、ユーザー テーブルに加えられたすべての変更を追跡したい場合は、データベースの挿入トリガーと更新トリガーを使用して、それらの変更を user_history テーブルに保存できます。
しかし、 user_id 、 product_id 、 cost がある user_products テーブルがある場合はどうでしょうか。システムにユーザーを追加すると、そのユーザーに関連付けられた 2 つの製品があるとします。したがって、私の user_products テーブルには、そのユーザーの 2 つの行があります。
user_id product_id cost
1 10 1000
2 20 2000
ここで、ユーザーの編集ページに移動して製品 1 を削除し、製品 3 を追加して、製品 2 のコストを 2000 から 3000 に変更するとします。
したがって、通常は user_id 1 のすべてのレコードを user_product テーブルから削除してから、新しい製品の新しい挿入を行います。
したがって、通常の更新ではなく、削除してから挿入します。したがって、履歴の変更を追跡することはできません。
理想的には、製品 1 を削除し、製品 3 を追加し、製品 2 のコストを 2000 から 3000 に変更したことを知りたいと思います。
編集1:-
アップデートはしていません。削除してから挿入しています。そのため、製品 ID 2 でコスト 2000 のレコードを削除しています。次に、製品 ID 2 でコスト 3000 のレコードを再度挿入しています。技術的には削除と挿入ですが、論理的にはコストのみが 2000 から 3000 に変更されます。両方の実行中に確認した場合ID 2 の製品を削除してから、同じ ID 2 の製品を追加したというクエリが表示されます。しかし、コストが2000から3000に変化したことを確認できるようにしたい