【MySQL】『001』设置外键错误汇总( $ _ $ )

错误代码

Error ERROR 1022: Can’t write; duplicate key in table ‘#sql-76b_7cbf’
# 这类错误,主要是外键名称重复导致,改为不同名字就可以了

Error ERROR 1215 (HY000): Cannot add foreign key constraint
# 当出现错误时,仔细检查数据库表和字段的设计,要保持一致

Error ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails
# 一般就是弄反了,外键是需要设置在子表上的,去REFERENCES一个父表

级联操作

CASCADE # 删除包含与已删除键值有参照关系的所有记录
SET NULL # 修改包含与已删除键值有参照关系的所有记录,使用NULL值替换(只能用于已标记为NOT NULL的 字段)
RESTRICT # 拒绝删除要求,直到使用删除键值的辅助表被手工删除,并且没有参照时(这是默认设置,也是最> 安全的设置)
NO ACTION # 什么都不做

正确的示例

ALTER TABLE `main`.`child` # 给子表设置外键
  ADD CONSTRAINT `for_idx`
  FOREIGN KEY (`idcard`) # 子表的外键
  REFERENCES `main`.`parent` (`idcard`) # 主表的键
  ON DELETE CASCADE # 主表删除数据跟着删除 相应的还有
  ON UPDATE CASCADE # 主表更新外键跟着更新

英语学习

CONSTRAINT [名词] 约束, 强制, 局促
REFERENCES [名词/动词] 参考
CASCADE [名词] 级联, 小瀑布 [动词] 喷流
FOREIGN [形容词] 国外, 对外, 外

特别感谢

[1] Microtiger. MySQL外键使用详解 2017-11-10 13:38
[2] 钟绍威. ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint… 2016-05-20
[3] 爱qiu求. 正式论文格式 2011-06-29

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值