Mysql实现级联操作(级联更新级联删除)
Posted 下页、再停留
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql实现级联操作(级联更新级联删除)相关的知识,希望对你有一定的参考价值。
一、首先创建两张表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表!
以上是关于Mysql实现级联操作(级联更新级联删除)的主要内容,如果未能解决你的问题,请参考以下文章