zoukankan      html  css  js  c++  java
  • Mysql实现级联操作(级联更新、级联删除)

    https://www.cnblogs.com/zxf100/p/6812269.html

    一、首先创建两张表stu,sc

    复制代码
    create table stu(
    sid int UNSIGNED primary key auto_increment,
    name varchar(20) not null)
    TYPE=InnoDB charset=utf8;
    
    create table sc(
    scid int UNSIGNED primary key auto_increment,
    sid int UNSIGNED not null,
    score varchar(20) default '0',
    index (sid),   --外键必须加索引
    FOREIGN KEY (sid) REFERENCES stu(sid) ON DELETE CASCADE ON UPDATE CASCADE)
    TYPE=InnoDB charset=utf8;
    复制代码

    --说明: 外键必须建立索引;

    FOREIGN key(sid)  设置外键,把sid设为外键

    REFERENCES stu(sid) 引用作用。引用stu表中的sid

    ON DELETE CASCADE 级联删除
    ON UPDATE CASCADE 级联更新

    二、向两张表插入数据

    复制代码
    insert into stu (name) value ('zxf');
    insert into stu (name) value ('ls');
    insert into stu (name) value ('zs');
    insert into stu (name) value ('ww');
    
    insert into sc(sid,score) values ('1','98');
    insert into sc(sid,score) values ('1','98');
    insert into sc(sid,score) values ('2','34');
    insert into sc(sid,score) values ('2','98');
    insert into sc(sid,score) values ('2','98');
    insert into sc(sid,score) values ('3','56');
    insert into sc(sid,score) values ('4','78');
    insert into sc(sid,score) values ('4','98');
    复制代码

    注意:在sc表中插入数据时,若插入的sid为22,则会插入失败,违反外键约束,因为外键sid 
    来自stu表中的id的主键,即stu中的id没有等于22的数据。

    级联删除:将stu表中id为2的学生删除,该学生在sc表中的成绩也会级联删除

    delete from stu where sid = '2';


    级联更新:stu表中id为3的学生更改为id为6,该学生在sc表中的对应id也会级联更新

    update stu set sid=6 where sid='3';

    注意

    删除表的时候必须先删除外键表(sc),再删除主键表(stu)

     

    上图为违反外键约束,不能删除

    上图为正常删除,先删除sc表,再删除stu表!

  • 相关阅读:
    [BAT] 通过批处理删除7天前的报告,并删除当前目录下的空文件夹
    Codeforces Round #361 (Div. 2) A
    Codeforces Round #359 (Div. 2) C
    Codeforces Round #359 (Div. 2) B
    Codeforces Round #359 (Div. 2) A
    Codeforces Round #357 (Div. 2) C
    Codeforces Round #357 (Div. 2) B
    Codeforces Round #357 (Div. 2) A
    Codeforces Round #356 (Div. 2) C
    Codeforces Round #356 (Div. 2) B
  • 原文地址:https://www.cnblogs.com/cblx/p/15674103.html
Copyright © 2011-2022 走看看