Sql 外键引用无效
Msg 1769,16级,状态1,第18行 外键“fkMP_MEDICO”在引用表“MEDICO_PACIENTE”中引用了无效列“DNIMedico”。 Msg 1750,16级,状态0,第18行 无法创建约束或索引。请参阅前面的错误Sql 外键引用无效,sql,sql-server,tsql,foreign-keys,Sql,Sql Server,Tsql,Foreign Keys,Msg 1769,16级,状态1,第18行 外键“fkMP_MEDICO”在引用表“MEDICO_PACIENTE”中引用了无效列“DNIMedico”。 Msg 1750,16级,状态0,第18行 无法创建约束或索引。请参阅前面的错误 声明外键不会自动创建列。您需要先声明列,然后声明外键 因此: CREATE TABLE MEDICO ( DNIMedico CHAR(9) NOT NULL, NumeroColegiado VARCHAR(200) NOT NULL,
声明外键不会自动创建列。您需要先声明列,然后声明外键 因此:
CREATE TABLE MEDICO (
DNIMedico CHAR(9) NOT NULL,
NumeroColegiado VARCHAR(200) NOT NULL,
Nombre VARCHAR(200) NOT NULL,
FechaNacimiento DATE NOT NULL,
CONSTRAINT pk_MEDICO PRIMARY KEY (DNIMedico)
)
CREATE TABLE PACIENTE (
DNIPaciente CHAR(9) NOT NULL,
Nombre VARCHAR(200) NOT NULL,
Direccion VARCHAR (200) NOT NULL,
Edad INT NOT NULL,
Peso FLOAT NOT NULL,
Altura FLOAT NOT NULL,
CONSTRAINT pk_PACIENTE PRIMARY KEY (DNIPaciente)
)
CREATE TABLE MEDICO_PACIENTE (
CONSTRAINT fkMP_MEDICO FOREIGN KEY (DNIMedico) REFERENCES
MEDICO (DNIMedico),
CONSTRAINT fkMP_PACIENTE FOREIGN KEY (DNIPaciente) REFERENCES
PACIENTE (DNIPaciente),
Especialidad VARCHAR(200) NOT NULL
)
请注意,每个引用列应具有与其引用的列相同的数据类型和长度
为MEDICO\u PACIENTE
表声明主键也是一个好主意。您可能希望在(DNIMedico,DNIPaciente)
上使用复合主键:
mysql sql server。请仅标记相关数据库(错误消息类似于sql server)。这是常见问题解答。在考虑发帖之前,请始终用谷歌搜索任何错误消息或你的问题/问题/目标的许多清晰、简洁和准确的措辞,有或没有你的特定字符串/名称和网站:stackoverflow.com&tags,并阅读许多答案。如果你发布一个问题,用一句话作为标题。查看文本上方的投票箭头鼠标(&T)。这是否回答了您的问题?谢谢,我没有注意到
CREATE TABLE MEDICO_PACIENTE (
DNIMedico CHAR(9) NOT NULL,
DNIPaciente CHAR(9) NOT NULL,
Especialidad VARCHAR(200) NOT NULL,
CONSTRAINT fkMP_MEDICO FOREIGN KEY (DNIMedico) REFERENCES MEDICO (DNIMedico),
CONSTRAINT fkMP_PACIENTE FOREIGN KEY (DNIPaciente) REFERENCES PACIENTE (DNIPaciente)
);
CREATE TABLE MEDICO_PACIENTE (
DNIMedico CHAR(9) NOT NULL,
DNIPaciente CHAR(9) NOT NULL,
Especialidad VARCHAR(200) NOT NULL,
CONSTRAINT fkMP_MEDICO FOREIGN KEY (DNIMedico) REFERENCES MEDICO (DNIMedico),
CONSTRAINT fkMP_PACIENTE FOREIGN KEY (DNIPaciente) REFERENCES PACIENTE (DNIPaciente),
CONSTRAINT pk_MEDICO_PACIENTE PRIMARY KEY (DNIMedico, DNIPaciente)
);