> Faqs > Cómo truncar una tabla con con foreign key: Error MySQL Cannot truncate

Cómo truncar una tabla con con foreign key: Error MySQL Cannot truncate

Estoy intentando hace el truncate sobre una tabla MySQL, pero no me deja.

Es una tabla que tiene claves foráneas por causa de una relación y claro, si la trunco se pierde la integridad referencial de MySQL, con lo que el sistema me adverte.

En realidad, querría truncar ambas tablas, por lo que la integridad referencial no debería ser problema una vez que ejecute todos los truncate, pero no lo puedo hacer, ni siquiera cambiando el orden de las sentencias truncate.

El error que me sale es este:

Cannot truncate a table referenced in a foreign key constraint (`BBDD`.`individual_goals`, CONSTRAINT `individual_goals_student_id_foreign` FOREIGN KEY (`student_id`) REFERENCES `BBDD`.`students` (`id`)

¿Aguna sugerencia para poder solucionar este problema?

Respuestas

En MySQL y/o MariaDB puedes desactivar temporalmente la integridad referencial marcada por las FOREIGN KEYS. Esto te permitirá truncar las tablas que necesitas sin darte ese problema de "foreign key constraint".

Lo consigues con un código como este:

SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE invoices;
TRUNCATE invoice_products;
TRUNCATE customers;
SET FOREIGN_KEY_CHECKS = 1;

Como puedes ver, después de hacer el truncate de las tablas, debes volver a activar los FOREIGN_KEY_CHECKS. Con eso podrás resolver tu problema.

Juanjo
97 4 6