当前位置:Gxlcms > 数据库问题 > Mysql实现级联操作(级联更新、级联删除)

Mysql实现级联操作(级联更新、级联删除)

时间:2021-07-01 10:21:17 帮助过:31人阅读

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实现级联操作(级联更新、级联删除)

标签:image   学生   round   key   不能   code   也会   innodb   into   

人气教程排行