如何在这种情况下使用DELETE ON CASCADE?

问题描述 投票:0回答:2

我有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,
             .....
sql ddl
2个回答
0
投票

不会。Applicant 毫无关系 Vacancy. 被删除的是 AppVac.

如果你想要求申请人至少有一行在 AppVac那么你就需要在表上设置一个删除触发器。 级联外键不会帮你做到这一点。 也就是说,级联删除从表中删除。指的 表,而不是从 参考 表:

© www.soinside.com 2019 - 2024. All rights reserved.