设置外键
创建外键约束的目的是保持数据一致性,完整性,以及实现一对一或一对多关系
打开Navicat
打开数据库选择表 ,然后右键点击设计表
进入表设计页面
点击外键按钮进入
删除时:删除时候选择的动作(这里选择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 关键字的列称为外键列 外键列所参照的列称为参照列)
设置为空
答:
所以是是不打钩的,否是打钩的 不选就为空