MySql – Borrar saltando restricción Foreign Key

Cuando estamos trabajando en base de datos de pruebas (en local o servidor), en ocasiones y normalmente en base de datos muy pesadas, nos puede interesar borrar registros de tablas que no nos interesa para poder trabajar mas cómodos (para que pese menos las importaciones). Empecemos con artículo MySql – Borrar saltando restricción Foreign Key.

Aquí es donde podemos encontrarnos con problemas como la eliminación de registros de tablas relacionadas. Sale el error que impide la eliminación de registros porque la tabla está relacionada con otra tabla (Foregin Keys).

Está claro que esta eliminación de registros dependerá de la relación entre tablas. Este ejemplo lo único que hace es eliminar registros saltándose la restricción de que vigile si las tablas estan relacionadas…

Inicialmente, le decimos que no checkee las foreign keys (se puede hacer desde phpmysql en la pestaña SQL). Posteriormente, volveremos a poner la restricción, por lo que será temporal.

SET FOREIGN_KEY_CHECKS=0;

Ahora ya podemos eliminar los registros sin que salga la restricción de Foreign Keys. Ei, atentos que es peligroso. Solo en bases de datos de pruebas. En producción ni se os ocurra. En un cliete como phpMyAdmin, permite que lo pongáis directamente en la pestaña SQL. Allí podéis ir ejecutando las órdenes que os indicamos.

Después de eliminar restablecemos la condición de checkeo de foreign keys

SET FOREIGN_KEY_CHECKS=1;

Ni que decir tiene, que hacer esto es muy peligroso. Estamos rompiendo la lógica de la base de datos. No sólo borramos registros de las tablas, si no que sus relaciones con otros registros, quedan huérfanos.

Espero que os haya gustado el artículo MySql – Borrar saltando restricción Foreign Key.


Más información