Heim >Datenbank >MySQL-Tutorial >Wie kann ich InnoDB dazu zwingen, Fremdschlüssel nach dem Laden von Daten erneut zu überprüfen?
Beim Laden von Daten in Tabellen mit Fremdschlüsseleinschränkungen ist die Sicherstellung der referenziellen Integrität von entscheidender Bedeutung. Wenn Sie FOREIGN_KEY_CHECKS während des Ladevorgangs jedoch auf 0 setzen, kann es nach der erneuten Aktivierung zu Dateninkonsistenzen kommen.
Um dieses Problem zu beheben, sollten Sie die Verwendung der bereitgestellten gespeicherten Prozedur in Betracht ziehen: 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 ;
Diese Prozedur analysiert alle Fremdschlüssel und identifiziert alle Zeilen, die diese verletzen. Die Ergebnisse werden in der Tabelle INVALID_FOREIGN_KEYS gespeichert.
Um dieses Verfahren zu verwenden:
Beachten Sie, dass dieses Verfahren für eine optimale Leistung Indizes sowohl für verweisende als auch für referenzierte Spalten erfordert.
Das obige ist der detaillierte Inhalt vonWie kann ich InnoDB dazu zwingen, Fremdschlüssel nach dem Laden von Daten erneut zu überprüfen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!