【mysql外來鍵(foreign key)的新增刪除】and【對外來鍵是否刪除的檢驗】
建立以下兩個表為例:
--book表--外來鍵表
create table book(
bid int primary key auto_increment,
bname varchar(100) unique,
price double,
ziti char(10) default '宋體',
yeshu bigint check(yeshu>0 and yeshu<1000),
pid int);
--publishers表--主鍵表---
create table publishers(
id int primary key,
name char(10));
--book表外來鍵 連線 publishers表主鍵
【建表前新增外來鍵--foreign key(pid) reference publishers(id) 】
建表後新增外來鍵:
alter table book add constraint book_pid_fkey foreign key(pid) references publishers(id)
建表後刪除外來鍵:
alter table book drop foreign key book_pid_fkey;
外來鍵基本常識:
1、插入資料 ,必須先插入主鍵表
2、刪除資料,必須先刪除外來鍵表
3、主鍵表沒被使用的行,可以被刪除
4、主鍵表有聯絡時,不能清空表【truncate table 表名】
對外來鍵是否刪除的檢驗:
---主鍵表--插入內容:insert into publishers values (10086,'冬瓜出版社')
---外來鍵表---插入內容:insert into book values (default,'飄',23,default,100,10086)
(1)新增外來鍵--book表外來鍵 連線 publishers表主鍵---
alter table book add constraint book_pid_fkey foreign key(pid) references publishers(id)
(2)外來鍵表插入資料-插入pid為10084,主鍵表id沒有10084,所以會插入失敗
insert into book values (default,'三體',23,default,100,10084)
(3)外來鍵表插入資料-因為插入pid為10086,主鍵表id也有10086,所以可成功插入
insert into book values (default,'三體',23,default,100,10086)
(4)刪除外來鍵-alter table book drop foreign key book_pid_fkey;
(5)外來鍵表插入-pid不是10086的資料,如果外來鍵刪除了,則可以插入成功
insert into book values (default,'飄',23,default,100,10084)