我正在使用MySQL Workbench CE进行大学作业。我有4个表:Applicants, Universities, Job, InterviewInterview在其他3个表中具有外键:appID(申请人ID),uniID(大学ID)和jobID(职位ID)。此外,job表具有uni列,它是universities.id的外键。本质上,每个工作都有一个工作编号以及与之相关的大学。每个面试除了一些其他信息外,还包括申请人,工作和大学。

我试图弄清楚如何检查输入到interview表中的职位空缺(职位编号及其相关的大学)是否确实存在于job表中。

例如,如果job中的唯一行是:

ID | JobID | UniID | .. 1 1 1 .

那么interview表不应接受类似以下内容的内容:

ID | AppID | JobID | UniID | ... x x 1 2 .

因为JobID = 1UniID = 2没有工作。

SELECT * FROM job as J LEFT JOIN interview as I ON J.uni = I.uniid WHERE J.id = I.jobid是我针对此问题提出的一项检查,但是,我不确定是否应该尝试在触发器中或断言中使用它。

最佳答案

您正在寻找外键关系。

如果jobs表在两列上都没有主键/唯一键,则定义一个:

alter table jobs add constraint unq_jobs_jobid_uniid on job(jobID, uniID);


然后,您可以将外键添加到interviews

alter table interviews add constraint fk_interviews_jobid_uniID
    foreign key (jobID, uniID) references job(jobID, uniID);


请注意,即使jobID已经是jobs中的主键,此方法也有效。

10-06 02:21