Navicat:在 Navicat 中创建外键约束


在 Navicat 中,可以在“表设计器”的“外键”选项卡上找到外键约束。

1 表设计

若要创建新的外键约束,请以“表设计器”打开子表(在本例中为 fwaq_flow_jcjd),然后点击“添加外键”按钮。这将在外键列表中创建一个新行:

在这里插入图片描述

2 外键设置

字段 下拉列表中选择要设置为外键的字段
被引用的模式 下拉列表中选择被引用的模式
被引用的表(父) 下拉列表中选择对应的表
被引用的字段 下拉列表中选择被引用的字段

在这里插入图片描述

3 删除、更新操作设置

下一步是选择“删除时”和“更新时”的橾作。MySQL 支持4种不同的引用选项,如下:
在这里插入图片描述
PostgreSQL支持5种不同的引用选项,如下

在这里插入图片描述

  • CASCADE:当我们从父表中删除或更新任何行时,子表中匹配行的值将被自动删除或更新。
  • SET NULL:当我们从父表中删除或更新任何行时,子表中的外键列的值会被设置为NULL。
  • RESTRICT:当我们从父表中删除或更新在引用(子)表中具有匹配行的任何行时,MySQL 不允许删除或更新父表中的行。
  • NO ACTION:类似于RESTRICT。但有一个不同之处,它会在尝试修改表后检查引用完整性。
  • SET DEFAULT:MySQL 解析器能识别此橾作。但是,InnoDB 和 NDB 表都拒绝此橾作。

4 保存

最后,点击“保存”按钮创建新的外键约束。请注意,如果你没有填写“名称”字段,Navicat 会为你创建一个名称。

### Navicat的使用方法 在设置方面,当要在两个表之间建立关系时,实际上是通过给表创建实现这一目标。具体来说,在Navicat中打开需要设置的表并右选择设计表之后,可以在界面中找到用于配置的部分[^2]。 对于的具体设定,有七项重要参数需要注意: - **名**:可以留空,因为保存后系统会自动生成名称。 - **字段**:指定作为的字段。 - **被引用的模式**:指明该所关联的目标数据库实例。 - **被引用的表(父)**:即与当前表形成父子关系的那个表。 - **被引用的字段**:在父表中的对应字段。 - **删除时**:定义当父表记录被删除时应采取的操作。 - **更新时**:规定父表记录更新时的行为方式。 如果遇到因修改主表ID字段类型而导致与其相关联的子表中字段不再匹配的情况,则可能引发错误码1025的问题。此时建议先调整所有涉及的子表结构使其保持一致性后再做更改[^4]。 针对某些情况下由于存在约束而无法顺利执行数据删除操作的情形,可以通过临时禁用全局级别的`FOREIGN_KEY_CHECKS`变量来绕过这些限制,但在实际应用前需谨慎评估潜在风险,并确保事后重新激活此安全机制以维护参照完整性[^5]。 ```sql SET FOREIGN_KEY_CHECKS = 0; -- 执行必要的DDL/DML语句... DELETE FROM child_table WHERE ... ; DELETE FROM parent_table WHERE ... ; SET FOREIGN_KEY_CHECKS = 1; ``` #### 注意事项 - 修改现有或者移除之前应当充分考虑业务逻辑的影响范围; - 对于生产环境下的任何变更都推荐事先备份好最新版本的数据副本; - 尽量避免直接操纵`FOREIGN_KEY_CHECKS`开关除非确实必要;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙 悟 空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值