MySQL存在问题,无法添加外键约束
我正在尝试创建一个名为appointment的表,但当我尝试创建它时,收到错误: 无法添加外键约束 我的SQL代码如下:MySQL存在问题,无法添加外键约束,mysql,sql,Mysql,Sql,我正在尝试创建一个名为appointment的表,但当我尝试创建它时,收到错误: 无法添加外键约束 我的SQL代码如下: CREATE TABLE APPOINTMENT( APNo VARCHAR(5), PNo VARCHAR(5), DNo VARCHAR(5), APDATE DATETIME ); ALTER TABLE APPOINTMENT ADD PRIMARY KEY (APNo), ADD FOREIGN KEY (PNo
CREATE TABLE APPOINTMENT(
APNo VARCHAR(5),
PNo VARCHAR(5),
DNo VARCHAR(5),
APDATE DATETIME
);
ALTER TABLE APPOINTMENT
ADD PRIMARY KEY (APNo),
ADD FOREIGN KEY (PNo) REFERENCES PATIENT(PNo),
ADD FOREIGN KEY (DNo) REFERENCES DOCTOR(DNo)
;
你看起来还不错。您没有显示引用表
PATIENT
和DOCTOR
的DDL,但是发生错误的原因可能是未满足MySQL外键要求之一
引自:
外键和引用键中的相应列必须具有相似的数据类型
您必须确保医生(DNo)
和患者(PNo)
都是VARCHAR(5)
MySQL需要外键和引用键的索引。[…]如果引用表不存在,则会自动在引用表上创建此类索引
理想情况下,DOCTOR(DNo)
和PATIENT(PNo)
应该是各自表的主键。否则,它们中的每一个都必须存在一个索引(它可以是一个多列索引,引用的列只出现一次)
有关工作示例,请参见:
CREATE TABLE PATIENT(PNo VARCHAR(5) PRIMARY KEY);
CREATE TABLE DOCTOR(DNo VARCHAR(5) PRIMARY KEY);
CREATE TABLE APPOINTMENT(
APNo VARCHAR(5),
PNo VARCHAR(5),
DNo VARCHAR(5),
APDATE DATETIME
);
ALTER TABLE APPOINTMENT
ADD PRIMARY KEY (APNo),
ADD FOREIGN KEY (PNo) REFERENCES PATIENT(PNo),
ADD FOREIGN KEY (DNo) REFERENCES DOCTOR(DNo)
;
你看起来还不错。您没有显示引用表
PATIENT
和DOCTOR
的DDL,但是发生错误的原因可能是未满足MySQL外键要求之一
引自:
外键和引用键中的相应列必须具有相似的数据类型
您必须确保医生(DNo)
和患者(PNo)
都是VARCHAR(5)
MySQL需要外键和引用键的索引。[…]如果引用表不存在,则会自动在引用表上创建此类索引
理想情况下,DOCTOR(DNo)
和PATIENT(PNo)
应该是各自表的主键。否则,它们中的每一个都必须存在一个索引(它可以是一个多列索引,引用的列只出现一次)
有关工作示例,请参见:
CREATE TABLE PATIENT(PNo VARCHAR(5) PRIMARY KEY);
CREATE TABLE DOCTOR(DNo VARCHAR(5) PRIMARY KEY);
CREATE TABLE APPOINTMENT(
APNo VARCHAR(5),
PNo VARCHAR(5),
DNo VARCHAR(5),
APDATE DATETIME
);
ALTER TABLE APPOINTMENT
ADD PRIMARY KEY (APNo),
ADD FOREIGN KEY (PNo) REFERENCES PATIENT(PNo),
ADD FOREIGN KEY (DNo) REFERENCES DOCTOR(DNo)
;
您必须使用多个ALTER TABLE语句可能重复的请向我们显示表
患者
和医生
的DDL。您必须使用多个ALTER TABLE语句可能重复的请向我们显示表患者
和医生
的DDL。