ホームページ > データベース > mysql チュートリアル > データのロード後に InnoDB に外部キーの再チェックを強制するにはどうすればよいですか?

データのロード後に InnoDB に外部キーの再チェックを強制するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-05 08:50:09
オリジナル
200 人が閲覧しました

How to Force InnoDB to Recheck Foreign Keys After Loading Data?

InnoDB にテーブルの外部キーの再チェックを強制する方法?

外部キー制約のあるテーブルにデータをロードする場合、参照整合性を確保することが重要です。ただし、ロード中に FOREIGN_KEY_CHECKS を 0 に設定すると、再度有効にした後にデータの不整合が発生する可能性があります。

これに対処するには、提供されているストアド プロシージャ ANALYZE_INVALID_FOREIGN_KEYS の使用を検討してください。

DELIMITER $$

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
        DECLARE VARIABLES...

        OPEN foreign_key_cursor;
        foreign_key_cursor_loop: LOOP
            FETCH foreign_key_cursor INTO 
            TABLE_SCHEMA_VAR, 
            ...

            SET @from_part = CONCAT(...);
            SET @full_query = CONCAT(...);
            PREPARE stmt FROM @full_query;

            EXECUTE stmt;
            IF @invalid_key_count > 0 THEN
                INSERT INTO 
                    INVALID_FOREIGN_KEYS 
                SET 
                    `TABLE_SCHEMA` = TABLE_SCHEMA_VAR, 
                    ...

            END IF;
            DEALLOCATE PREPARE stmt; 

        END LOOP foreign_key_cursor_loop;
    END$$

DELIMITER ;
ログイン後にコピー

このプロシージャはすべてを分析します。外部キーを検出し、それらに違反する行を特定します。結果は INVALID_FOREIGN_KEYS テーブルに保存されます。

このプロシージャを使用するには:

  • CALL ANALYZE_INVALID_FOREIGN_KEYS('%', '%', 'Y'); を実行します。データベース全体を分析するには、データベース全体を分析します。
  • 範囲を絞り込むには、'%' を特定のデータベースおよびテーブル パターンに置き換えます。
  • 結果を永続テーブルに保存するには、temporary_result_table に 'N' を指定します。

最適なパフォーマンスを得るには、この手順では参照列と参照列の両方にインデックスが必要であることに注意してください。

以上がデータのロード後に InnoDB に外部キーの再チェックを強制するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート