在mysql中为唯一索引列生成外键

xxslljrj  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(347)

产品

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
)

我想给上面的“产品代码”做一个外键。。。。。。这是我的密码

ALTER TABLE services
ADD COLUMN `PRODUCT_CODE` VARCHAR(5),
// ADD foreign `PRODUCT_CODE` that refrences to `PRODUCT_CODE` in PRODUCTS table

那么如何在mysql中完成上面的注解行呢??

shyt4zoc

shyt4zoc1#

外键中引用的列可以是主键,也可以是唯一的。首先需要在上添加索引 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` table。您将得到以下错误:
错误代码:1215。无法添加外键约束
在这种情况下,您需要修复表中的数据。您可以查看此答案以获取提示:https://stackoverflow.com/a/53099922/2469308

相关问题