【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

你可能感兴趣的:(MySQL,MySQL,外键,1022,1452,FOREIGN,KEY)