一、首先創建兩張表stu,sc --說明: 外鍵必須建立索引; FOREIGN key(sid) 設置外鍵,把sid設為外鍵 REFERENCES stu(sid) 引用作用。引用stu表中的sid ON DELETE CASCADE 級聯刪除ON UPDATE CASCADE 級聯更新 二、向兩張 ...
一、首先創建兩張表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表!