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,
`UNIT_TYPE` VARCHAR(1) NULL,
UNIQUE INDEX UNIQUE_COMAPNY_PRODUCT_CODE (`COMPANY_ID`, `PRODUCT_CODE`),
CONSTRAINT `PRODUCT_COMPANY_ID_FK` FOREIGN KEY (`COMPANY_ID`) REFERENCES `companies` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE
)
,我想对上层“ PRODUCT_CODE”做一个外键…… 这是我的代码
ALTER TABLE services
ADD COLUMN `PRODUCT_CODE` VARCHAR(5),
// ADD foreign `PRODUCT_CODE` that refrences to `PRODUCT_CODE` in PRODUCTS table
那么如何在mysql中做上面的注释行?
答案 0 :(得分:1)
在外键中引用的列可以是主键或唯一键。您需要首先在PRODUCT_CODE
上添加索引。我把它当作UNIQUE
ALTER TABLE PRODUCTS ADD UNIQUE INDEX (PRODUCT_CODE);
然后,您可以使用ALTER TABLE .. ADD FOREIGN KEY
语法:
ALTER TABLE services
ADD FOREIGN KEY (PRODUCT_CODE) REFERENCES PRODUCTS(PRODUCT_CODE);
将此与您现有的ALTER TABLE
查询结合起来,一个查询如下所示:
ALTER TABLE services
ADD COLUMN `PRODUCT_CODE` VARCHAR(5),
ADD FOREIGN KEY (PRODUCT_CODE) REFERENCES PRODUCTS(PRODUCT_CODE);
如果services
表中已经有一些数据,这些数据具有某些PRODUCT_CODE
值,而这些数据在PRODUCTS
表中不存在。您将收到以下错误:
错误代码:1215。无法添加外键约束
在这种情况下,您将需要修复表中的数据。您可以查看此答案以获取提示:https://stackoverflow.com/a/53099922/2469308