我试图看看是否可以将复合键中的一个列用作外键。我得到了奇怪的结果。
CREATE TABLE TESTPARENT(
PK1 INT,
PK2 INT,
PRIMARY KEY(PK1,PK2)
);
Query OK, 0 rows affected (0.01 sec)
CREATE TABLE TESTCHILD1(
FK1 INT,
FOREIGN KEY (FK1) REFERENCES TESTPARENT(PK1)
);
Query OK, 0 rows affected (0.01 sec)
CREATE TABLE TESTCHILD2(
FK2 INT,
FOREIGN KEY (FK2) REFERENCES TESTPARENT(PK2)
);
ERROR 1005 (HY000): Can't create table 'test.TESTCHILD2' (errno: 150)MySQL允许创建一个外键,它只引用主键中的第一列,而不引用第二列。这很奇怪吗?还是我太蠢了!
发布于 2016-06-29 09:06:23
发布于 2016-06-29 09:05:20
在FK关系中,应对子表和父表上的列进行索引。MySQL不能对第二列使用索引(在您的情况下是PK2)。因此,您需要在PK2上添加索引:
alter table TESTPARENT add key (PK2);https://stackoverflow.com/questions/38094819
复制相似问题