mysql之级联
外键的级联
1.问题
当你想要修改主表的数据,由于从表引用了主表的数据,不能直接修改主表的数据,会报错,所以这个时候我们就需要进行级联操作
2.级联操作
在修改和删除主表的主键时,同时更新或删除从表的外键值,称为级联操作
语法:
on update cascade -- 级联更新 主键发生更新时,外键也会更新
on delete cascade -- 级联删除 主键发生删除时,外键也会删除
ps:
创建数据库a
create table a(
id int primary key auto_increment,
a_name varchar(20),
a_location varchar(100)
)
创建数据库b
CREATE TABLE b(
id int primary key auto_increment,
name varchar(20),
age int,
dep_id int,
constraint b_dep_id_fk FOREIGN key(dep_id) REFERENCES a(id) on UPDATE CASCADE on DELETE CASCADE //设置外键并添加级联操作
)
使用上面的代码分别创建了表a(左)和表b(右) 我们随便往两表中插入一些数据 如图


我们可以看出来a表中财务部的id为1,市场部的id为2 b表中id为1和2的人属于市场部,id为3的人属于财务部
由于在创建b表的时候已经添加了可以级联的操作,我们可以直接改变a表中部门的id,b表中的dep_id也会随之改变,代码如下
级联的更新 如下图
UPDATE a set id=12 where id =2 // 将表a中id为2改为12


级联的删除 如下图
delete from a where id=12 // 删除id为12的部门



浙公网安备 33010602011771号