Navicat如何设置外键和为空

简介: Navicat如何设置外键和为空

设置外键


创建外键约束的目的是保持数据一致性,完整性,以及实现一对一或一对多关系


打开Navicat

1.png


打开数据库选择表 ,然后右键点击设计表

image.png


进入表设计页面

65390ee8072c454a8f15e342a592b709.png


点击外键按钮进入

65390ee8072c454a8f15e342a592b709.pnga3ff2aa190484193801f180518c55fe7.png


删除时:删除时候选择的动作(这里选择CASCADE


刷新时:更新时候选择的动作(这里选择CASCADE

CASCADE ---就是当关联的表更新后, food中的food_id也随着更新。


以上字段也可以按照自己的需求填写,设置完成后保存即可。

某个表已经有记录了,添加外键失败,这时候只需要将两个要关联的表中的数据清空再从新添加外键关系即可

可能会出现的错误:

ERROR: 1822 — Failed to add the foreign key constraint. Missing index for constraint ‘XXXX’ in the referenced table ‘XXXX

MySQL报这个错时去检查外键设置!!!这个外键是不是另外一个表的主键

设置外键的时候需要注意以下几点:


(1)外键是用于两个表的数据之间建立连接,可以是一列或者多列,即一个表可以有一个或多个外键。

(2)这个表里面设置的外键必须是另外一个表的主键

(3)外键可以不是这个表的主键,但必须和另外一个表的主键相对应(字段的类型和值必须一样)。

(4)带有主键的那张表称为父表,含外键的是子表,必须先删除外键约束才能删除父表。

(5)外键要存在,父表和子表必须使用相同的存储引擎,而且禁止使用临时表,所以必须保证表的引擎是 InnoDB(默认的存储引擎),如果不是 InnoDB 存储引擎,那么外键可以创建成功,但没有约束作用;

(6)每张表中的外键名称不能重复;

(7)如果外键约束模式选择SET NULL ,那么字段必须允许为NULL,否则出现Cannot add foreign key constraint。

(8)外键列和参照列必须建立索引。如果外键列不存在索引的话,MYSQL将自动创建索引。如果参照列不存在索引的话,MySQL不会自动创建索引(FOREGIN KEY 关键字的列称为外键列 外键列所参照的列称为参照列)


设置为空

65390ee8072c454a8f15e342a592b709.pnga3ff2aa190484193801f180518c55fe7.png

答:

所以是是不打钩的,否是打钩的   不选就为空



相关文章
|
6月前
|
关系型数据库 MySQL 数据库
MySQL数据库——约束
MySQL数据库——约束
|
3月前
|
SQL 关系型数据库 MySQL
navicat如何获取MySQL数据库的所有表名称
【8月更文挑战第7天】navicat如何获取MySQL数据库的所有表名称
258 4
|
5月前
|
前端开发 JavaScript 小程序
Navicat使用导入向导批量插入数据到数据库
Navicat使用导入向导批量插入数据到数据库
|
6月前
|
关系型数据库 MySQL Java
使用screw生成MySQL数据库表设计说明
该内容是一个关于使用SpringBoot集成Screw库生成数据库文档的教程。
34 0
|
6月前
|
存储 关系型数据库 MySQL
『 MySQL数据库 』数据库之表的约束
『 MySQL数据库 』数据库之表的约束
|
11月前
|
存储 关系型数据库 MySQL
MYSQL数据库-表的约束
MYSQL数据库-表的约束
|
SQL 测试技术 数据库
Navicat使自增主键归1
截断表:可以用于删除表中的所有数据。 截断表命令还会回收所有索引的分配页。
286 0
Navicat使自增主键归1
|
SQL 关系型数据库 MySQL
MySQL 外码约束原理:如何解决数据库添加数据时产生的外码(外键)约束?
MySQL 外码约束原理:如何解决数据库添加数据时产生的外码(外键)约束?
511 0
MySQL 外码约束原理:如何解决数据库添加数据时产生的外码(外键)约束?
|
Java 关系型数据库 测试技术
数据库是否应该使用外键约束?
数据库是否应该使用外键约束?
276 0
数据库是否应该使用外键约束?
|
XML 数据库 数据格式
数据库报错!外键问题。
数据库报错!外键问题。
91 0
下一篇
无影云桌面