gpt4 book ai didi

mysql - 错误 1215 : CANNOT ADD FOREIGN KEY CONSTRAINT ; Composite Foreign key

转载 作者:行者123 更新时间:2023-11-29 10:32:20 27 4
gpt4 key购买 nike

我收到错误代码 1215:无法为子表添加外键约束。父表具有复合主键。我想使用该复合主键作为子表中的外键。请指导我。

父表

CREATE TABLE health.procedures(
Specialty varchar(40),
Procedure_Name varchar(60),
PRIMARY KEY (Procedure_Name, Specialty)
);

子表

CREATE TABLE health.procedureProvided(
specialization varchar(40),
procedure_name varchar(60),
Insurance_ID int REFERENCES health.insurance (idInsurance),
Hospital_ID int REFERENCES health.hospital (idHospital) ,
Doctor_ID int REFERENCES health.doctor( idDoctor) ,
CONSTRAINT procedures_fk foreign key (specialization,procedure_name)references health.procedures(Specialty,Procedure_Name) ,
PRIMARY KEY (specialization, procedure_name, Insurance_ID, Hospital_ID, Doctor_ID)
);

最佳答案

您指定的外键无效。您的主键是 health.procedure 中的 procedure_name,但您尝试在 health.procedureProvided 中创建复合外键。您无法将其创建为外键,因为主表中的 Specialty 列不是主表的一部分。外键必须包含贡献表主键中的所有列,但不能包含该主键之外的值。你有三个真实的选择。 1. 将 Specialty 指定为过程中主键的组成部分。不幸的是,这意味着该程序不一定是独特的,而是因专业而独特。 2. 添加代理键 - 系统生成的序列值、uuid 或其他内容(不建议使用时间戳)。 3. 创建验证表 valid_procedures 和 valid_specialties 并使用表 health.procedure 作为这些表之间的交集以提供有效的过程和相关的专业,然后您可以迁移整个主键。

关于mysql - 错误 1215 : CANNOT ADD FOREIGN KEY CONSTRAINT ; Composite Foreign key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47165832/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com