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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章