ホームページ >データベース >mysql チュートリアル >MySQL でレコードの変更を効率的に追跡およびクエリするにはどうすればよいですか?

MySQL でレコードの変更を効率的に追跡およびクエリするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-11 18:31:12741ブラウズ

How Can I Efficiently Track and Query Record Changes in 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。