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