Есть ли способ проверить, совпадает ли новая строка в таблице с записями в других таблицах? [SQL] - PullRequest
0 голосов
/ 08 ноября 2018

Я использую MySQL Workbench CE для колледжа. У меня есть 4 таблицы: Applicants, Universities, Job, Interview. Interview имеет внешние ключи в трех других таблицах: appID (идентификатор заявителя), uniID (идентификатор университета) и jobID (идентификатор работы). Кроме того, таблица job имеет столбец uni, который является внешним ключом для universities.id. По сути, каждая работа имеет свой номер работы и связанный с ним университет. У каждого собеседования есть заявитель, работа и университет, в дополнение к некоторой другой информации.

Я пытаюсь выяснить, как проверить, действительно ли предложение о работе (номер вакансии + связанный с ним университет), внесенный в таблицу interview, действительно существует в таблице job.

Например, если единственная строка в job:

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

Тогда таблица interview не должна принимать что-то вроде:

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

поскольку нет работы с JobID = 1 и UniID = 2.

SELECT * FROM job as J LEFT JOIN interview as I ON J.uni = I.uniid WHERE J.id = I.jobid - это проверка, которую я придумала для этой проблемы, однако я не уверен, должен ли я пытаться использовать ее в триггере или как часть утверждения.

1 Ответ

0 голосов
/ 08 ноября 2018

Вы ищете отношение внешний ключ .

Если в таблице 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.

...