ホームページ >データベース >mysql チュートリアル >MySQL でレコードの変更を効率的に追跡およびクエリするにはどうすればよいですか?
MySQL でのレコード変更履歴の維持
MySQL ユーザーは、データベース内のレコードに加えられた変更を追跡するというジレンマに直面することがよくあります。これは、データの整合性を確保する場合、監査証跡を提供する場合、または偶発的な変更から回復する場合に特に重要になります。この課題に効果的に対処するために、効率的で簡単な解決策を検討してみましょう。
トリガーを使用した履歴テーブルの作成
提案されたアプローチでは、データ テーブルごとに履歴テーブルを作成します。追跡したい。この履歴テーブルは、対応するデータ テーブルの構造をミラーリングし、操作 (挿入、更新、または削除) を示す「action」、シーケンスの「revision」、操作のタイムスタンプを取得する「dt_datetime」の 3 つの列を追加します。
履歴を維持するために、データ テーブルにトリガーが設定されます。挿入、更新、または削除操作時に、トリガーは履歴テーブルに新しい行を挿入し、変更されたフィールドの古い値と新しい値とともに関連情報をキャプチャします。順序付けの目的で MyISAM エンジンを使用していることに注意してください。
履歴レコードのクエリ
特定のレコードの履歴を表示するには、履歴テーブルを主キー列のデータテーブル。リビジョン番号でフィルタリングすることにより、特定のリビジョンを取得したり、特定の列に加えられた経時的な変更を示すビューを作成したりできます。
例
テーブルがあるとします。これは「Products」という名前で、列「ID」、「名前」、および「数量」があります。このテーブルへの変更を追跡するには、追加の「action」、「revision」、「dt_datetime」列を含む「Products_History」という対応する履歴テーブルを作成します。
トリガーを設定した後、挿入、更新が行われます。 、または「Products」に対する削除操作は「Products_History」に記録されます。これら 2 つのテーブルを「ID」列で結合して、特定の製品の変更履歴を表示できます。
利点
以上がMySQL でレコードの変更を効率的に追跡およびクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。