сделать внешний ключ к уникальному индексу в MySQL - PullRequest
0 голосов
/ 16 ноября 2018

Продукты

CREATE TABLE if NOT EXISTS `PRODUCTS` (
   `ID` INT unsigned NOT NULL AUTO_INCREMENT,
   `COMPANY_ID` INT(10) unsigned NOT NULL,
   `PRODUCT_CODE` VARCHAR(5) NOT NULL,
   `PRODUCT_NAME` VARCHAR(15) NOT NULL,
   PRIMARY KEY (`ID`),
   UNIQUE INDEX UNIQUE_COMAPNY_UNIT_CODE (`COMPANY_ID`, `PRODUCT_CODE`)
)

Услуга

ALTER TABLE services
ADD COLUMN `PRODUCT_CODE` VARCHAR(5),
ADD FOREIGN KEY (`PRODUCT_CODE`) REFERENCES PRODUCTS(`PRODUCT_CODE`) ON DELETE CASCADE ON UPDATE CASCADE;

но это всегда дает мне эту ошибку при попытке сделать верхний внешний ключ missing index in the references table products ... любая помощь, как сделать код продукта в коде службы ссылки на код продукта в таблице продуктов?

1 Ответ

0 голосов
/ 16 ноября 2018

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

Также, как правило, вы ссылаетесь на PK таблицы;если ни по какой другой причине, кроме как минимизировать ситуации, когда необходимы каскады.Код продукта, скорее всего, изменится, чем автоматически увеличенный идентификатор строки.

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