Desactivar temporalmente claves foráneas en MySQL

Muchas veces tenemos que borrar datos de tablas, o vaciarlas completamente, pero MySQL no nos lo permite porque hay datos en otra tabla relacionados mediante clave foránea. ¿Cómo podemos desactivar las comprobaciones de clave foránea para ejecutar el borrado correctamente?

El siguiente código desactiva la comprobación de foreign keys, ejecuta las consultas, y luego las vuelve a activar. Ideal para vaciar tablas.

SET foreign_key_checks = 0;
DELETE FROM `tabla` where `id` = 45;
TRUNCATE TABLE `tabla_vaciar`;
SET foreign_key_checks = 1;

Este código es muy sencillo, pero nunca consigo recordarlo. Espero que os sea tan útil como a mi. ¿Dudas, sugerencias? Déjame un comentario.

Acerca de Iván Argulo

Programador, Analista de Sistemas y Webmaster Perfil en Google+

Publicado el mayo 9, 2013 en Uncategorized. Añade a favoritos el enlace permanente. 2 comentarios.

  1. Jose Alexis Correa Valencia

    Gracias por el dato, cree un programa para respaldar y restaurar el contenido de una base de datos MySQL, pero como el respaldo puede contener tablas con claves foraneas cada que se iniciaba el proceso este fallava por las relaciones entre las tablas y el contenido que se restauraba, tu recordatorio me ha sacado de apuros.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: