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添加外键内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Window下Neo4j安装图文教程

    Window下Neo4j安装图文教程

    这篇文章主要为大家详细介绍了Window下Neo4j安装图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • 关于navicat事务自动提交问题

    关于navicat事务自动提交问题

    这篇文章主要介绍了关于navicat事务自动提交问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 利用SQL脚本导入数据到不同数据库避免重复的3种方法

    利用SQL脚本导入数据到不同数据库避免重复的3种方法

    这篇文章主要给大家介绍了关于利用SQL脚本导入数据到不同数据库避免重复的3种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-10-10
  • YII2数据库查询实践

    YII2数据库查询实践

    这篇文章主要介绍了YII2数据库查询实践的相关资料,需要的朋友可以参考下
    2016-01-01
  • RBAC权限模型_动力节点Java学院整理

    RBAC权限模型_动力节点Java学院整理

    这篇文章主要介绍了RBAC权限模型,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Linux下实现OpenGauss数据库远程连接的教程

    Linux下实现OpenGauss数据库远程连接的教程

    openGauss是一款开源关系型数据库管理系统,采用木兰宽松许可证v2发行,本文主要为大家详细介绍了如何在Linux环境下实现OpenGauss数据库远程连接,需要的可以参考下
    2023-09-09
  • 特殊的存储过程-触发器概述

    特殊的存储过程-触发器概述

    一直都不知道触发器的具体应用,今天看到一篇触发器的解释文章
    2008-04-04
  • CentOS 8.2部署CouchDB 3.3数据库的方法

    CentOS 8.2部署CouchDB 3.3数据库的方法

    这篇文章主要介绍了CentOS 8.2部署CouchDB 3.3数据库,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 一步步教你使用Navicat工具创建MySQL数据库连接

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

    Navicat是一套快速、可靠并价格相当便宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设,下面这篇文章主要给大家介绍了关于如何使用Navicat工具创建MySQL数据库连接的相关资料,需要的朋友可以参考下
    2023-03-03
  • SQL数据库与oracle数据库镜像有什么不同对比

    SQL数据库与oracle数据库镜像有什么不同对比

    数据库镜像是将数据库事务处理从一个数据库移动到不同环境中的另一个数据库中。镜像的拷贝是一个备用的拷贝,不能直接访问,它只用在错误恢复的情况下。
    2010-03-03

最新评论