Как использовать DELETE ON CASCADE в этом сенарио? - PullRequest
0 голосов
/ 26 мая 2020

Итак, у меня есть 3 таблицы: соискатель, вакансия и таблица ссылок. Я пытаюсь удалить данные соискателя при удалении вакансии. Вот текущий SQL код, который у меня есть, удалит ли это кандидата?

CREATE TABLE Applicant(
  ID INT PRIMARY KEY,
  name varchar(20),
  address varchar(20),
  VacancyID INT,
  FOREIGN KEY (VacancyID) REFERENCES Vacancy(ID) ON DELETE CASCADE);


CREATE TABLE AppVac(
             ApplicantID INT PRIMARY KEY,
             VacancyID INT PRIMARY KEY,
             FOREIGN KEY (ApplicantID) REFERENCES Applicant(ID),
             FOREIGN KEY (VacancyID) REFERENCES Vacancy(ID);

CREATE TABLE Vacancy(
             ID INT PRIMARY KEY,
             .....

1 Ответ

0 голосов
/ 26 мая 2020

Нет. Applicant не имеет отношения к Vacancy. Удаляются все соответствующие строки в AppVac.

. Если вы хотите, чтобы кандидаты имели хотя бы одну строку в AppVac, тогда вам понадобится триггер удаления в таблице. Каскадные внешние ключи не сделают этого за вас. То есть каскадное удаление удаляет удаление из таблицы , ссылающейся на , а не из таблицы reference .

...