ホームページ  >  記事  >  データベース  >  データの一括変更後に InnoDB テーブルの参照整合性を検証する方法

データの一括変更後に InnoDB テーブルの参照整合性を検証する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-20 16:15:18686ブラウズ

How to Verify Referential Integrity in InnoDB Tables After Bulk Data Modifications?

InnoDB テーブルでの参照整合性の強制

InnoDB テーブルの外部キー制約は、参照されたレコードの削除を防ぐことでデータの整合性を確保します。ただし、データを一括変更した後は、外部キーの制約がそのまま残っていることを確認する必要がある場合があります。

InnoDB には、外部キーの再チェックを強制する組み込みメソッドがありません。ただし、このタスクを実行するためにカスタム SQL ストアド プロシージャを作成できます。

カスタム SQL ストアド プロシージャ

次のストアド プロシージャ ANALYZE_INVALID_FOREIGN_KEYS を使用して、すべてのデータを分析できます。データベース内のテーブルを検索し、無効な外部データを特定します。キー:

DELIMITER $$

DROP PROCEDURE IF EXISTS ANALYZE_INVALID_FOREIGN_KEYS$$

CREATE
    PROCEDURE `ANALYZE_INVALID_FOREIGN_KEYS`(
        checked_database_name VARCHAR(64), 
        checked_table_name VARCHAR(64), 
        temporary_result_table ENUM('Y', 'N'))

    LANGUAGE SQL
    NOT DETERMINISTIC
    READS SQL DATA

    BEGIN
        -- ... (stored procedure code) ...
    END$$
DELIMITER ;

使用法

ストアド プロシージャを使用するには、次のクエリを実行します。

CALL ANALYZE_INVALID_FOREIGN_KEYS('%', '%', 'Y');

これにより、すべてのテーブルが分析されます。現在のデータベースを保存し、無効な外部キー違反を という名前の一時テーブルに保存します。 INVALID_FOREIGN_KEYS.

結果の解釈

INVALID_FOREIGN_KEYS テーブルには、無効な外部キーごとに次の情報が含まれます:

  • TABLE_SCHEMA: データベース名違反者のtable.
  • TABLE_NAME: 違反しているテーブルの名前。
  • COLUMN_NAME: 違反している列の名前。
  • CONSTRAINT_NAME: 外部キー制約の名前。
  • REFERENCED_TABLE_SCHEMA: 参照先のデータベース名table.
  • REFERENCED_TABLE_NAME: 参照されるテーブルの名前。
  • REFERENCED_COLUMN_NAME: 参照される列の名前。
  • INVALID_KEY_COUNT: 無効な外部キー参照の数。
  • INVALID_KEY_SQL: A無効な行を取得するために使用できる SQL クエリ。

制限

このプロシージャには次の制限があることに注意してください:

  • 自己参照外部キー制約はチェックしません。
  • 必要です。最適なパフォーマンスを得るために、参照列と参照列の両方にインデックスを作成します。
  • 大規模なデータベースの場合、実行にかなりの時間がかかる場合があります。

以上がデータの一括変更後に InnoDB テーブルの参照整合性を検証する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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