错误代码
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