mysql - 在使用外键删除表时,还删除引用的表
问题描述
当我使用外键删除行时,有一种方法可以删除引用的记录吗? 这是我的数据库表 ,当我删除表“cartelle”中的记录时,我想删除表“righe”引用的 3 条记录
解决方案
只需在另一个方向添加您的参考,如下所示:
-- cartelle (folder)
CREATE TABLE folders ( folder_id int primary key );
-- righe (rows, tied to a folder)
CREATE TABLE xrows (
row_id int primary key
, folder_id int
, FOREIGN KEY (folder_id) REFERENCES folders (folder_id) ON DELETE CASCADE
);
INSERT INTO folders VALUES (1), (2), (3);
INSERT INTO xrows VALUES
(1, 1)
, (2, 1)
, (3, 1)
, (4, 2)
, (5, 3)
, (6, 2)
;
row_id | 文件夹 ID |
---|---|
1 | 1 |
2 | 1 |
3 | 1 |
4 | 2 |
5 | 3 |
6 | 2 |
现在当我们删除 a 时folder
,对应的rows
也会被删除。
DELETE FROM folders WHERE folder_id = 1;
SELECT * FROM xrows;
结果:
row_id | 文件夹 ID |
---|---|
4 | 2 |
5 | 3 |
6 | 2 |
推荐阅读
- ruby - 遍历数组并在 Ruby 中的一行中初始化多个变量
- java - Java Discord API 加入事件
- jquery - 从 JQuery 错误中获取 responseText 错误值?
- c++ - CMake不合逻辑的路径解析?
- javascript - 如何停止计时器计数并从节省的时间开始
- microsoft-graph-api - 过滤最近的文件 Microsoft Graph API 不起作用
- python - Python - Pandas - SQL 查询参数 - 无法过滤没有双引号的数据
- python - 拆分python模块而不重构所有用法
- cypress - Cypress.exec 调用外部脚本并设置环境变量
- python - 将 scipy 结果转换为字典的通用方法