sql - 如何在这个场景中使用 DELETE ON CASCADE?
问题描述
所以我有 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,
.....
解决方案
不。Applicant
与 没有关系Vacancy
。被删除的是所有对应的行AppVac
。
如果您想要求申请者在 中至少有一行AppVac
,那么您需要在表格上设置一个删除触发器。级联外键不会为您做到这一点。也就是说,级联删除是从引用表中删除,而不是从引用表中删除。
推荐阅读
- css - rails 6中scss文件的正确后缀是什么
- javascript - 在 React 中预加载数据
- javascript - 为什么 2 ** (1 << 31) == 0?
- c++ - 在 C++ 智能指针实现中调用“运算符 T()”
- html - Flexbox 不适用于页面响应
- html - 如何使 html 页面显示文件而不是下载文件?
- ruby - 为什么将传递给方法的字符串文字更改为参数之一?
- amazon-web-services - 在 ssh 上使用 pipenv 命令的问题
- swift - 如何在swiftUI中以高性能显示来自Observable Object的数据?
- c# - C# 中的 MySQL:如何启用流量压缩?