Navicat添加外键详细操作步骤

 更新时间:2020年11月23日 14:15:50   作者:劲枫  
这篇文章主要介绍了Navicat添加外键详细操作步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

用Navicat为mysql数据库的两个表之间建立外键关系,出现“cannot add foreign key constraint”错误,操作了很久不知道怎么回事,发现竟然是。。。。

正文

想要建立class表与student表之间的外键连接,class为父表,student为子表

打开student的设计表。

如果c_id不允许为空则当,选择删除时-->>SET NULL就会出现Cannot add foreign key constraint的提示,这是因为删除置空有条件,必须满足字段允许为空(如果不满足,外键无法创建)当然,如果不允许为空,可以选择删除时-->>CASCADE也可以建立外键。

当勾选允许为空之后

再去保存就可以了。

还有必须注意,Engin必须为InnoDB。

总结一下:

外键条件

在我们使用外键的时候,应该遵循如下条件:

  • 外键要存在,首先必须保证表的引擎是 InnoDB(默认的存储引擎),如果不是 InnoDB 存储引擎,那么外键可以创建成功,但没有约束作用;
  • 外键字段的字段类型(列类型),必须与父表的主键类型完全一致;
  • 每张表中的外键名称不能重复;
  • 增加外键的字段,如果数据已经存在,那么要保证数据与父表中的主键对应。
  • 如果外键约束模式选择SET NULL ,那么字段必须允许为NULL,否则出现Cannot add foreign key constraint。

外键约束

所谓外键约束,就是指外键的作用。之前所讲的外键的作用都是默认的作用,实际上,可以通过对外键的需求,进行定制操作。

外键约束有三种模式,分别为:

  • district:严格模式(默认),父表不能删除或更新一个已经被子表数据引用的记录;
  • cascade:级联模式,父表的操作,对应子表关联的数据也跟着被删除;
  • set null:置空模式,父表的操作之后,子表对应的数据(外键字段)被置空。

 设计外键的界面,有七列:

  • 名(name):可以不填,保存时会自动生成。
  • 栏位(FieldName):要设置的外键,如:student 里的c_id
  • 参考数据库(Reference DataBase):外键关联的数据库
  • 被参考表(Reference Table):关联的表,这里是class表
  • 参考栏位(Forgin filed Names):关联的字段,class里的id
  • 删除时(ondelete):删除时候的动作,当时我选择的是SETNULL
  • 更新时(onupdate):更新时候的动作,我选择的是CASCADE

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

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

到此这篇关于Navicat添加外键详细操作步骤的文章就介绍到这了,更多相关Navicat添加外键内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • where 子句的执行顺序

    where 子句的执行顺序

    貌似在2005之前的版本中,where子句的顺序是从前往后的。但是又貌似在2005的版本中进行了优化,所有的顺序都被统一成了以过滤能力进行排序的语句。
    2009-04-04
  • 一步步教你使用Navicat工具创建MySQL数据库连接

    一步步教你使用Navicat工具创建MySQL数据库连接

    Navicat是一套快速、可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设,下面这篇文章主要给大家介绍了关于如何使用Navicat工具创建MySQL数据库连接的相关资料,需要的朋友可以参考下
    2023-03-03
  • 海量数据库的查询优化及分页算法方案 2 之 改良SQL语句

    海量数据库的查询优化及分页算法方案 2 之 改良SQL语句

    海量数据库的查询优化及分页算法方案 2 之 改良SQL语句...
    2007-03-03
  • dba_indexes视图的性能分析

    dba_indexes视图的性能分析

    前端时间,在监控系统中加入了index的状态是否为unusable,以及其并行度是否有设置的监控:
    2008-08-08
  • 国产开源数据库openGauss容器部署过程详解

    国产开源数据库openGauss容器部署过程详解

    openGauss是一款开源的关系型数据库管理系统,它具有多核高性能、全链路安全性、智能运维等企业级特性,这篇文章主要介绍了国产开源数据库openGauss容器部署,需要的朋友可以参考下
    2022-08-08
  • DataGrip2022导入和导出sql文件图文教程

    DataGrip2022导入和导出sql文件图文教程

    这篇文章主要给大家介绍了关于DataGrip2022导入和导出sql文件的相关资料,DataGrip的导出功能也是相当强大,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • 关于关系数据库如何快速查询表的记录数详解

    关于关系数据库如何快速查询表的记录数详解

    这篇文章主要给大家介绍了关于关系数据库如何快速查询表的记录数的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用关系数据库具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • DataGrip 连接 HiveServer2 报错的问题

    DataGrip 连接 HiveServer2 报错的问题

    这篇文章主要介绍了DataGrip 连接 HiveServer2 报错的问题,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 一文告诉你Sql的执行顺序是怎样的

    一文告诉你Sql的执行顺序是怎样的

    这篇文章主要给大家介绍了关于Sql的执行顺序是怎样的,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 海量数据库的查询优化及分页算法方案集合1/2

    海量数据库的查询优化及分页算法方案集合1/2

    海量数据库的查询优化及分页算法方案集合1/2...
    2007-03-03

最新评论