Внешние ключи в MySQL используют все. Про их пользу и сферы применения будет отдельная статья.. Но часто бывает, что даже при использовании, существенно облегчающих жизнь приложений — например, phpMyAdmin, navicat, MySQLWorkBench и т.д., стает проблема удаления связанных записей.
Конечно, MySQL заботится о целостности и не дает случайно удалить связанные данные. В случае попытки выполнить TRUNCATE на связанную таблицу Вы получите что-то похожее на это:
Cannot truncate a table referenced in a foreign key constraint
Но, если Вы понимаете, что делаете и возиться с удалением цепочек Вам некогда — есть очень простой способ отключить проверку внешних ключей.
Для отключения проверки внешних ключей используйте следующую команду:
SET foreign_key_checks = 0
Соответственно, для включения проверки обратно, используйте код ниже:
SET foreign_key_checks = 1
Все просто — между этими командами Вы можете выполнять любое количество действий, которые будут выполняться без проверки целостности внешних ключей. Например:
SET foreign_key_checks = 0; TRUNCATE TABLE `my_table`; SET foreign_key_checks = 1;
Этот код удалит таблицу, не выполняя при этом проверку внешних ключей.