在DELETE CASCADE中,自引用MySQL表的深度超过15级失败
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在DELETE CASCADE中,自引用MySQL表的深度超过15级失败,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1230字,纯文字阅读大概需要2分钟。
内容图文
我有一个自我引用外键的MySQL表. ON DELETE CASCADE在它中工作得非常好,但是我注意到一个奇怪的行为,它对于父实体最多只能工作14个级别.一旦我添加一个15级孩子并尝试删除父级,它就会开始抛出错误
“Cannot delete or update a parent row: a foreign key constraint fails”
这是层次结构的图像.
尝试删除Parent将抛出错误.
>在删除Child15时,可以删除Parent
>不删除Child15,如果我尝试删除Child1,则会成功删除它.
重现行为的示例模式是here.在构建架构之前粘贴此行查询,其中id = 1而不是id = 2
DELETE FROM table1 WHERE id=1;
我知道删除它的可能的解决方法
> SET FOREIGN_KEY_CHECKS = 0
>删除时向下移动
但是我想知道,对于ON CASCADE DELETE,这是一些已知的MySQL限制吗?
我使用的是MySQL服务器版本5.6
解决方法:
这是记录在案的行为:
If ON UPDATE CASCADE or ON UPDATE SET NULL recurses to update the same
table it has previously updated during the cascade, it acts like
RESTRICT. This means that you cannot use self-referential ON UPDATE
CASCADE or ON UPDATE SET NULL operations. This is to prevent infinite
loops resulting from cascaded updates. A self-referential ON DELETE
SET NULL, on the other hand, is possible, as is a self-referential ON
DELETE CASCADE. Cascading operations may not be nested more than 15
levels deep.
资料来源:InnoDB and FOREIGN KEY Constraints, Referential Actions
内容总结
以上是互联网集市为您收集整理的在DELETE CASCADE中,自引用MySQL表的深度超过15级失败全部内容,希望文章能够帮你解决在DELETE CASCADE中,自引用MySQL表的深度超过15级失败所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。