首先明确一个概念,假如表A(id,name,foreign_id),表B(foreign_id,name),我们说表A参考了表B的主键作为其外键使用,所以B表示父表,A表是子表
删除和更新有四种设置方式
(1)cascade:级联,当父表更新、删除,子表会同步更新和删除
(2)set null:置空,当父表更新、删除的时候,字表会把外键字段变为null,所以这个时候设计表的时候该字段要允许为null,否则会出错
(3)restrict:父表在删除和更新记录的时候,要在子表中检查是否有有关该父表要更新和删除的记录,如果有,则不允许删除个更改
(4)no action:和restrict一样
版权声明:本文为CSDN博主「瘦不下来的吴彦祖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zzy296753977/article/details/80848613
解决方法:
(1)设置为级联
(2)
1、外键失效方式
mysql> SET FOREIGN_KEY_CHECKS = 0; # 临时设置外键失效
mysql>执行操作
mysql> SET FOREIGN_KEY_CHECKS = 1; # 操作结束后恢复外键
附: 直接通过navicat的查询编辑器执行sql语句
2、删除表的方式(一般不采用这种操作)
通过navicat工具,查看与表的外键相关联的表,然后delete。
来源: https://www.php.cn/tool/navicat/427788.html