Cascade级联删除的简单理解

可以先简单理解成:触发器

让我们举个栗子

  1. 在数据库建三个表:a(主表),aa,aaa
-- 表a
create table a(
id intPRIMARY KEY,
age int
)

-- 表aa,没有级联
create table aa(
id1 intPRIMARY KEY,
age1 int,
FOREIGN KEY(id1) REFERENCES a(id) 
)

-- 表aaa,设置级联删除
create table aaa(
id2 intPRIMARY KEY,
age2 int,

FOREIGN KEY(id2) REFERENCES a(id) ON DELETE CASCADE
)
  1. 对各表插入数据
insert into a VALUES ('001','001');
insert into a VALUES ('002','002');
insert into aa VALUES ('001','0011');
insert into aaa VALUES ('002','0022');

2.1. 查看一下此时各表的数据

select id 'a表id',age from a;
select id1 'aa表id',age1 from aa;
select id2 'aaa表id',age2 from aaa;

Cascade级联删除的简单理解
Cascade级联删除的简单理解
Cascade级联删除的简单理解

  1. 对主表进行记录删除操作
delete from a where id = 1; -- 无法删除
delete from a where id = 2; -- 可删除
  1. 再查看一下各表
select id 'a表id',age from a; -- 少了一条记录
select id1 'aa表id',age1 from aa; -- 无变化
select id2 'aaa表id',age2 from aaa; -- 无纪录