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

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

Dec 11, 2024 pm 06:31 PM

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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DockerでのMySQLメモリの使用を減らします DockerでのMySQLメモリの使用を減らします Mar 04, 2025 pm 03:52 PM

DockerでのMySQLメモリの使用を減らします

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか? Mar 19, 2025 pm 03:51 PM

Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

mysqlの問題を解決する方法共有ライブラリを開くことができません mysqlの問題を解決する方法共有ライブラリを開くことができません Mar 04, 2025 pm 04:01 PM

mysqlの問題を解決する方法共有ライブラリを開くことができません

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし) Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし) Mar 04, 2025 pm 03:54 PM

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

sqliteとは何ですか?包括的な概要 sqliteとは何ですか?包括的な概要 Mar 04, 2025 pm 03:55 PM

sqliteとは何ですか?包括的な概要

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド Mar 04, 2025 pm 03:49 PM

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? 人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか? Mar 21, 2025 pm 06:28 PM

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか? Mar 18, 2025 pm 12:01 PM

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?

See all articles