Rumah >pangkalan data >tutorial mysql >Bagaimana Memaksa InnoDB untuk Semak Semula Kekunci Asing Selepas Memuatkan Data?
Apabila memuatkan data ke dalam jadual dengan kekangan kunci asing, memastikan integriti rujukan adalah penting. Walau bagaimanapun, menetapkan FOREIGN_KEY_CHECKS kepada 0 semasa pemuatan boleh mengakibatkan ketidakkonsistenan data selepas mendayakannya semula.
Untuk mengatasinya, pertimbangkan untuk menggunakan prosedur tersimpan yang disediakan: 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 ;
Prosedur ini menganalisis semua kunci asing dan mengenal pasti mana-mana baris yang melanggarnya. Hasilnya disimpan dalam jadual INVALID_FOREIGN_KEYS.
Untuk menggunakan prosedur ini:
Perhatikan bahawa prosedur ini memerlukan indeks pada kedua-dua lajur rujukan dan rujukan untuk prestasi optimum.
Atas ialah kandungan terperinci Bagaimana Memaksa InnoDB untuk Semak Semula Kekunci Asing Selepas Memuatkan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!