Вынудить InnoDB перепроверить внешние ключи на таблице/таблицах?

У меня есть ряд InnoDB таблицы, которые я периодически должен поддерживать путем удаления некоторых строк и вставки других. Несколько из таблиц имеют ограничения внешнего ключа, ссылающиеся на другие таблицы, таким образом, это означает, что порядок загрузки таблицы важен. Для вставки новых строк, не волнуясь о порядке таблиц я использую:

SET FOREIGN_KEY_CHECKS=0;

прежде, и затем:

SET FOREIGN_KEY_CHECKS=1;

после.

Когда загрузка завершена, я хотел бы проверить, что данные в обновленных таблицах все еще содержат ссылочную целостность - что новые строки не повреждают ограничения внешнего ключа - но кажется, что нет никакого способа сделать это.

Как тест, я ввел данные, что я был уверен, что нарушенные ограничения внешнего ключа, и после перевключения проверок внешнего ключа, mysql не произвели предупреждений или ошибок.

Если я попытался найти способ указать порядок загрузки таблицы и уехал, внешний ключ начинает работу во время процесса загрузки, это не позволило бы мне загружать данные в таблице, которая имеет ограничение внешнего ключа самоссылки, таким образом, это не было бы приемлемым решением.

Там какой-либо путь состоит в том, чтобы вынудить InnoDB проверить таблицу или ограничения внешнего ключа базы данных?

60
задан Insane Skull 29 December 2015 в 05:28
поделиться

1 ответ

Не существует инструмента, который может это сделать. Но вы можете написать скрипт, который пройдет по всем вашим таблицам, удалит и воссоздаст ограничения внешних ключей. При восстановлении будет выдана ошибка, если что-то не так.

1
ответ дан 24 November 2019 в 17:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: