1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Mysql外键约束foreign key

Mysql外键约束foreign key

时间:2019-10-23 11:10:17

相关推荐

Mysql外键约束foreign key

独角兽企业重金招聘Python工程师标准>>>

前提:使用外键功能,存储引擎需为InnoDb类型;

一、建表时同时创建外键

1、情景,班级表 和 学生表,一对多的关系。

2、班级表称A主表,学生表称B从表,当B表中有个字段使用了A表主键作为字段内容,此字段称为外键;

3、首先创建班级表,A表

4、创建学生表,B表,使用A表的id作为其外键

注:1、外键字段自动添加了索引

2、在没有明确指定约束名时,会自动分配 一个约束名

5、为什么说外键是约束

在默认的严格模式下:

从表中外键字段不能使用主表中不存在的主键ID

如果从表使用了主表字段中的数据后,主表这些记录将无法删除

二、删除外键

语法:alter table 从表名称 drop foreign key 外键的约束名(上面的约束名为 studentinfo_ibfk_1)

注:删除外键后,原外键的索引会保留。

三、手工添加外键

格式:alter table 从表名 add foreign key (从表中字段名称) references 主表名 (主表的主键字段名)

四、外键字段的联动操作

上面看到,从表外键字段使用了主表的id,在主表中该id记录删除不了,实际并不一定不能删除

外键约束分3种情况:

stric,严格模式,默认的方式,不允许修改和删除

cascade,级联,主表修改或删除,从表跟着变化

set null,设置为null,主表数据删除,从表外键字段变为null

比较合理的方式是:

on update cascade

on delete set null

我们在定义外键时,不一定非要用严格模式,可以根据需求,修改或删除采用 级联 或 set null

注:如果外键字段在删除时使用的是set null 方式,一定要看一下外键字段是否是not null,如果是,要修改为允许为null

也可只设置一个 on update casade;只修改生效,不能删除啦

例:操作演示,修改主键,从表主键自动被修改。

操作演示:删除主表ID

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。