【问题标题】:How to use DELETE ON CASCADE in this senario?在这种情况下如何使用 DELETE ON CASCADE?
【发布时间】:2020-05-26 11:14:31
【问题描述】:

所以我有 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。我想要完成的是当空缺被删除时,申请人的数据也被删除。申请人通过链接表(AppVac)链接到空缺

标签: sql ddl


【解决方案1】:

没有。 ApplicantVacancy 没有关系。被删除的是AppVac中所有对应的行。

如果您想要求申请人在AppVac 中至少有一行,那么您需要在表格上设置一个删除触发器。级联外键不会为您做到这一点。也就是说,级联删除是从 referring 表中删除,而不是从 reference 表中删除。

【讨论】:

    猜你喜欢
    • 2012-12-06
    • 1970-01-01
    • 2017-03-05
    • 2016-09-28
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2015-11-30
    相关资源
    最近更新 更多