mysql - MySql递归过程:如何修复无限循环
问题描述
我正在尝试在 MySql 中编写存储过程以从树结构中删除整个子树。
CREATE PROCEDURE delete_with_children(IN node INT)
BEGIN
DECLARE child_id INT;
DECLARE finished INT DEFAULT 0;
DECLARE cur CURSOR FOR
SELECT id FROM nodes WHERE parent_id = node;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;
DELETE from nodes where id = node;
OPEN cur;
WHILE(finished < 1) DO
FETCH cur INTO child_id;
CALL delete_with_children(child_id);
END WHILE;
CLOSE cur;
END;
它很好地插入了自己,但是当我尝试使用该结构的参数 4 执行它时https://imgur.com/a/kqW7ulS,我收到这样的错误:递归限制 100(由 max_sp_recursion_depth 变量设置)超出了例程 delete_with_children。如果有人帮助我,我将不胜感激。
解决方案
推荐阅读
- java - Java 的 jar:如何从特定的文件列表创建 .jar 文件并使用 -C 选项?
- javascript - 努力更新对象数组中的列表
- python - 无法使用 pip 更新 chardet
- c# - 如何包含列表中包含的类型的派生属性
- python - 在 PyCharm 中运行结束时启动脚本
- flutter - Flutter Scaffold Appbar 不显示后退按钮
- c# - 包含自动生成日期的 ASP.NET 模型
- c# - helperclass 中的 Blazor httpcontext 为空
- google-apps-script - 如果单元格值 = x,则有效地将行复制并粘贴到另一个工作表
- class - 我创建这个类的方式有问题吗?