1. 程式人生 > 其它 >【mysql外來鍵(foreign key)的新增刪除】and【對外來鍵是否刪除的檢驗】

【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)