簡體   English   中英

錯誤1215:無法添加外鍵約束; 復合外鍵

[英]error 1215: CANNOT ADD FOREIGN KEY CONSTRAINT ; Composite Foreign key

我收到錯誤代碼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中創建復合外鍵。 您無法將其創建為外鍵,因為主表中的專業列不屬於主鍵。 外鍵必須包含貢獻表的主鍵中的所有列,但不能包含不在該主鍵中的值。 您有三個實際選擇。 1.將Specialty指定為過程中主鍵的組成部分。 不幸的是,這意味着該程序不一定是唯一的,而是專業的。 2.添加代理鍵-系統生成的序列值,uuid或其他內容(不建議使用時間戳記)。 3.創建驗證表valid_procedures和valid_specialties,並使用表health.procedure作為提供有效過程和相關專業的表之間的交集,然后可以遷移整個主鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM