Как обновить значения полей внешнего ключа, ссылающихся на родительскую таблицу в MySQL? - PullRequest
0 голосов
/ 19 июня 2019

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

Есть ли способ автоматически обновлять значения внешних ключей, ссылающихся на старые строки, на «id» вновь созданной строки, или это возможно только вручную, просматривая все таблицы ссылок? Я использую номер (id) для идентификации строк.

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

Сообщение об ошибке: ошибка SQL (1451): невозможно удалить или обновить родительскую строку: сбой ограничения внешнего ключа ... (имена таблиц, которые я не могу показать)

1 Ответ

0 голосов
/ 19 июня 2019

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

Конечно, прежде чем начинать какие-либо обновления ключей, вам потребуется отключить ограничение внешнего ключа, прочитайте этот пост о том, как это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...