1. 程式人生 > >Mysql實現級聯操作(級聯更新、級聯刪除)

Mysql實現級聯操作(級聯更新、級聯刪除)

刪除表 null weight .cn eat 失敗 bsp src 成績

一、首先創建兩張表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實現級聯操作(級聯更新、級聯刪除)