Ошибка при добавлении внешнего ключа во вновь созданную таблицу (mySQL) - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь изменить табличный продукт, чтобы добавить ограничение внешнего ключа типа для поля petCat_ID, чтобы оно ссылалось на таблицу petCategory (ID).Я только что создал таблицу petCat_ID и получаю сообщение об ошибке «Не удается добавить или обновить дочернюю строку».

Это команды, которые я выполнил, чтобы получить эту ошибку:

 Alter table product
-> ADD CONSTRAINT FK_petCatID
-> FOREIGN KEY (petCat_ID)
-> REFERENCES productCategory(ID);

Любая помощь илисоветы будут с благодарностью!Примечание: petCat_ID находится в таблице product, а productCategory - это другая таблица.

1 Ответ

0 голосов
/ 03 марта 2019

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

  1. Если оператор ALTER не работает и у вас хороший синтаксис, это потому, что то, что вы делаете, конфликтует с уже существующим правилом.

  2. Иногда,выполнение команды DROP TABLE с последующим повторным созданием таблицы может исправить проблемы.Это может быть проблематично, если есть зависимости, которые не позволяют вам отбросить таблицу.

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

  4. Я сделал здесь репозиторий github , в которомЯ сделал третью нормальную версию формы, на которую будет похож клиент, стоящий перед базой данных Amtrack, и даже написал сценарии для добавления данных в таблицы с примерами.Есть изображения, показывающие структуру ER.Я включил свой сценарий создания, разбитый на создание каждой таблицы в определенном порядке.Это должно быть хорошим справочным материалом о том, как назначать связи таблиц, и это даст вам хорошее представление о том, что вы можете изменить. Отказ от ответственности Я написал это для SSMS, но я не верю, что использовал что-то конкретное для SSMS. Я ДУМАЮ, что код должен работать в MySQL.

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