我有一个自我引用外键的MySQL表。 ON DELETE CASCADE在它中工作得非常好,但是我注意到一个奇怪的行为,它对于父实体最多只能工作14个级别。只要我添加一个15级孩子并尝试删除父级就会开始抛出错误
"无法删除或更新父行:外键约束失败"
以下是层次结构的图像。
尝试删除Parent会抛出错误。
重现行为的示例模式为here。在构建架构之前,使用id = 1而不是id = 2
粘贴此查询行DELETE FROM table1 WHERE id = 1;
我知道删除它的可能的解决方法,如
但是我想知道这是用于ON CASCADE DELETE的MySQL的一些已知限制吗?
我正在使用MySQL服务器版本5.6
答案 0 :(得分:6)
这是记录在案的行为:
如果ON UPDATE CASCADE或ON UPDATE SET NULL递归更新相同 在级联期间它先前更新过的表,它的作用就像 限制。这意味着您不能使用自引用ON UPDATE CASCADE或ON UPDATE SET NULL操作。这是为了防止无限 级联更新产生的循环。一个自引用的ON DELETE 另一方面,SET NULL是可能的,因为是自参考ON 删除CASCADE。 级联操作的嵌套次数可能不超过15次 水平很深。