Cómo desactivar rápidamente todas las claves foráneas en MySQL
¿Necesitas desactivar de un plumazo todas las foreign keys para borrar unas cuantas tablas o insertar algunas filas de pruebas?
Como sabrás, al borrar una tabla con las claves foráneas salta un error informando que no posible porque hay referencias de integridad de una tabla a otra y no podrás.
Ésto en un script de mantenimiento o migración es obstructivo porque no es viable obtener el código de activación y desactivación de cada una de las claves.
Desactivación de todas las claves foráneas:
SET FOREIGN_KEY_CHECKS = 0;
Activación
SET FOREIGN_KEY_CHECKS = 1;
Ejemplo de implementación en un procedimiento de migración, que carga de nuevo una tabla que tiene referencias:
/* Desactivacion de claves ajenas*/
SET FOREIGN_KEY_CHECKS = 0;
/* Borrado de tablas */
DROP TABLE hec_visitas;
DROP TABLE dim_areas;
CREATE TABLE dim_areas AS SELECT * FROM `esquema2`.dim_areas
CREATE TABLE hec_visitas AS SELECT * FROM `esquema2`.hec_visitas ...
/* Activacion de claves */
SET FOREIGN_KEY_CHECKS = 1;