mysql递归
依赖关系表:t_task_link(task_id int, task_pid int);
依赖关系为一个有向无环图,例如:

当添加依赖关系时需要检测是否有回路,下面是我写的存储过程,有的能能正确检测,有的却不行,希望高手指点
依赖关系为一个有向无环图,例如:

当添加依赖关系时需要检测是否有回路,下面是我写的存储过程,有的能能正确检测,有的却不行,希望高手指点
-- 检查任务依赖是否有回路
DROP PROCEDURE IF EXISTS check_loop;
CREATE PROCEDURE check_loop (in_task_id INT, in_task_pid INT, OUT out_status TINYINT)
BEGIN
DECLARE _task_id INT;
DECLARE done INT DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT task_pid FROM t_task_link WHERE task_id = in_task_pid;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop : LOOP
FETCH cur INTO _task_id;
IF in_task_id = _task_id THEN
SET out_status = 1;
SET done = TRUE;
END IF;
IF done THEN
LEAVE read_loop;
END IF;
CALL check_loop (in_task_id, _task_id, @out_status);
END LOOP;
CLOSE cur;
END;
DROP PROCEDURE IF EXISTS exists_loop;
CREATE PROCEDURE exists_loop (in_task_id INT, in_task_pid INT)
BEGIN
SET @@max_sp_recursion_depth = 255;
CALL check_loop (in_task_id, in_task_pid, @out_status);
SELECT IFNULL(@out_status, 0);
END;
...全文
相关推荐
两种mysql递归tree查询效率-mysql递归tree
MySQL递归查询方法:1.
SQL如何实现MYSQL的递归查询
在SQL中,递归查询通常用于处理层级关系的数据,例如组织结构、文件目录或树形结构。然而,MySQL的标准版本并不直接支持递归公共表表达式(CTE)。
Mysql树形递归查询的实现方法
总的来说,尽管MySQL没有内置的递归查询功能,但通过自定义函数和适当的设计,仍然可以有效地处理树形结构数据的查询。理解这些技术可以帮助我们在MySQL环境中优雅地处理复杂的层次数据问题。
MySQL实现递归查询的三种方式.rar
MySQL数据库在处理涉及层次结构或递归的数据时,提供了多种方法。本压缩包中的内容主要介绍了三种实现递归查询的方法,适用于不同的需求和环境。
mysql递归存储过程
本文将介绍如何在MySQL中实现递归存储过程,主要涉及两个存储过程:一个用于创建临时表以存储所需数据,另一个利用这个临时表执行递归操作。示例代码提供了一个名为`SP_ReNameFolder`的存储


