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的部门

  

 

posted @ 2021-07-28 10:45  小小度  阅读(525)  评论(0)    收藏  举报