[英]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.