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;

David Burgos

Read more posts by this author.