Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 外键引用无效_Sql_Sql Server_Tsql_Foreign Keys - Fatal编程技术网

Sql 外键引用无效

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,

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,
    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)
);