使一个外键指向mysql中的唯一索引

时间:2018-11-16 18:42:52

标签: mysql database

产品

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时总是给我这个错误...如何在services表中使product_code转换为products表中的product_code的任何帮助?

1 个答案:

答案 0 :(得分:1)

外键必须引用按引用顺序从引用字段开始的索引。要引用PRODUCT_CODE,您必须在PRODUCT_CODE上具有索引(或以PRODUCT_CODE开头)。

通常,您还可以引用表的PK。如果没有其他原因,那么它最大程度地减少了需要级联的情况。与自动递增的行标识符相比,产品代码更容易更改。