首页 > 解决方案 > SQL 外键没有被另一个表引用

问题描述

我如何将以下外键与该表相关联?

我想要的是在time_slotcheckup _appt表之间建立关系。我希望能够建立一对多的关系,或者一对多的关系

CREATE TABLE time_slot
(
    slot_id varchar(4),
    adoption_id varchar(8),
    day varchar(1),
    req_appt_id varchar(8),
    start_hr numeric(2) check (start_hr >= 0 and start_hr < 24),
    start_min numeric(2) check (start_min >= 0 and start_min < 60),
    end_hr numeric(2) check (end_hr >= 0 and end_hr < 24),
    end_min numeric(2) check (end_min >= 0 and end_min < 60),

    primary key (slot_id, req_appt_id, adoption_id),
);
 
CREATE TABLE well_check_up 
(
    slot_id varchar(4),
    adoption_id varchar(8),
    req_appt_id varchar(8),
    day varchar(1),

    PRIMARY KEY (slot_id, req_appt_id, adoption_id),
    FOREIGN KEY (req_appt_id) REFERENCES time_slot (slot_id, req_appt_id, adoption_id)
);
 

标签: sqlforeign-keysprimary-key

解决方案


你的primary Key 主键(time_slot_id, day,start_min,req_appt_id,adoption_id),); 在时隙上,是一个组合的主键。您需要在 well_check 上引用所有这些,而不仅仅是 req_appt_id。

像这样

 Reference Time_slot(time_slot_id, 
 day,start_min,req_appt_id,adoption_id).

这意味着您还必须在 Well_check 上添加这些列。


推荐阅读