【发布时间】:2020-02-20 11:10:54
【问题描述】:
在以下两个语句之间创建表时遇到错误
CREATE TABLE SECTION (
cid varchar(10) not null,
sno varchar(3) not null,
primary key (cid, sno),
foreign key (cid) references COURSE (cid)
);
CREATE TABLE ROUND_RELEASE (
cid varchar(10) not null,
sno varchar(3) not null,
rid int not null,
foreign key (cid) references SECTION (cid),
foreign key (sno) references SECTION (sno),
foreign key (rid) references ROUND (rid)
);
错误代码:1822。添加外键约束失败。引用表“section”中的约束“round_release_ibfk_2”缺少索引
但是,当我尝试交换 SECTION 表中的主键顺序时,我能够毫无错误地创建两个表
CREATE TABLE SECTION (
cid varchar(10) not null,
sno varchar(3) not null,
primary key (**sno, cid**),
foreign key (cid) references COURSE (cid)
);
CREATE TABLE ROUND_RELEASE (
cid varchar(10) not null,
sno varchar(3) not null,
rid int not null,
foreign key (cid) references SECTION (cid),
foreign key (sno) references SECTION (sno),
foreign key (rid) references ROUND (rid)
);
上面的代码有效,我只是交换属性,据我所知,顺序无关紧要,所以我很困惑为什么会发生这种情况。
对此有任何指导吗?谢谢!
【问题讨论】:
标签: mysql sql foreign-keys create-table