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表!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM