У меня есть ряд InnoDB
таблицы, которые я периодически должен поддерживать путем удаления некоторых строк и вставки других. Несколько из таблиц имеют ограничения внешнего ключа, ссылающиеся на другие таблицы, таким образом, это означает, что порядок загрузки таблицы важен. Для вставки новых строк, не волнуясь о порядке таблиц я использую:
SET FOREIGN_KEY_CHECKS=0;
прежде, и затем:
SET FOREIGN_KEY_CHECKS=1;
после.
Когда загрузка завершена, я хотел бы проверить, что данные в обновленных таблицах все еще содержат ссылочную целостность - что новые строки не повреждают ограничения внешнего ключа - но кажется, что нет никакого способа сделать это.
Как тест, я ввел данные, что я был уверен, что нарушенные ограничения внешнего ключа, и после перевключения проверок внешнего ключа, mysql не произвели предупреждений или ошибок.
Если я попытался найти способ указать порядок загрузки таблицы и уехал, внешний ключ начинает работу во время процесса загрузки, это не позволило бы мне загружать данные в таблице, которая имеет ограничение внешнего ключа самоссылки, таким образом, это не было бы приемлемым решением.
Там какой-либо путь состоит в том, чтобы вынудить InnoDB проверить таблицу или ограничения внешнего ключа базы данных?
Не существует инструмента, который может это сделать. Но вы можете написать скрипт, который пройдет по всем вашим таблицам, удалит и воссоздаст ограничения внешних ключей. При восстановлении будет выдана ошибка, если что-то не так.