首页 > 解决方案 > 在使用外键删除表时,还删除引用的表

问题描述

当我使用外键删除行时,有一种方法可以删除引用的记录吗? 这是我的数据库表 ,当我删除表“cartelle”中的记录时,我想删除表“righe”引用的 3 条记录

标签: mysqlsqlforeign-keys

解决方案


只需在另一个方向添加您的参考,如下所示:

小提琴

-- 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

推荐阅读