`
wangzi6hao
  • 浏览: 213824 次
  • 性别: Icon_minigender_1
  • 来自: sdf
社区版块
存档分类
最新评论

mysql删除树节点存储过程 删除节点存储过程

    博客分类:
  • Sql
阅读更多
CREATE PROCEDURE `proc_adminMenu_deleteMenu`(in rootId int)
BEGIN
   
    DECLARE sTemp VARCHAR(1000);/*定义一个临时字段来存放所有的类别与子类别*/
    DECLARE sTempChd VARCHAR(1000);/*定义一个临时字段,来得到当前类别的子类别*/

    SET sTemp = '$';
    SET sTempChd =CAST(rootId as CHAR);

    WHILE sTempChd is not null DO
        SET sTemp = CONCAT(sTemp,',',sTempChd);/*将以前类别与现在查询类别进行合并*/
        /*将每次查到的子id形成一个字符组,放到sTempChd里,如果sTempChd为null就停止循环*/
        SELECT GROUP_CONCAT(id) INTO sTempChd FROM webSys_adminMenu where FIND_IN_SET(pid,sTempChd)>0;
    END WHILE;
    DELETE FROM webSys_adminMenu WHERE FIND_IN_SET(id,sTemp);/*删除本菜单与所有子菜单*/
   
END;
 

当时我是自己写了一个得到所有子节点id字符串的函数,格式为&,1,2,3,4,5,6之类的。
在删除时是调用的
DELETE FROM webSys_adminMenu WHERE FIND_IN_SET(id,getTreeNode(1) );
可是这个删除在调用的时候,就只能删除二级,在向朋友请教以后,认为调用DELETE FROM webSys_adminMenu WHERE FIND_IN_SET(id,getTreeNode(1) );的时候,每一次都会重新的去getTreeNode(1)这个函数,这样就只会删除二个级层了。改成以上过程以后,就正常了。

分享到:
评论

相关推荐

    删除数据库表中的父节点以及其子节点

    本文将深入探讨如何使用存储过程来实现这一功能,特别关注如何删除父节点及其所有子节点。首先,我们需要理解数据库中的“父节点”和“子节点”的概念。 在层次数据模型中,每个节点可以有一个或多个子节点,而一...

    mysql递归调用获取树节点(子树)

    在提供的`mysql递归调用获取树节点(子树).doc`文档中,应该详细解释了这个过程,包括如何创建和执行存储过程,以及如何使用提供的测试数据。确保查看文档以获取完整的步骤和示例,以便在实际项目中成功应用这些...

    MySQL存储过程实现树的遍历

    利用MySQL存储过程实现树的初始化、插入、深度遍历、按层遍历、删除操作。可以作为学习存储过程的笑demo

    mysql 使用存储过程实现树节点的获取

    本篇文章将详细讲解如何利用MySQL的存储过程实现树节点的获取。 首先,我们需要一个具有层级关系的表,例如`document_file_name`,它可能包含以下字段: - id:每个节点的唯一标识 - pId:父节点的id,用于表示...

    使用递归删除树形结构的所有子节点(java和mysql实现)

    使用递归删除树形结构的所有子节点(java和mysql实现) ...使用递归删除树形结构的所有子节点可以使用 Java 和 MySQL 实现,前者使用 Map 存储树形结构的数据,而后者使用递归查询删除所有子节点。

    mysql递归调用获取树节点(子树).pdf

    总结起来,通过创建具有自引用关系的`treenodes`表,配合使用递归存储过程,可以有效地在MySQL中处理树形结构数据,获取特定节点的子树。这种方法虽然效率可能不如其他更高级的数据结构(如NL-Tree或Closure Table)...

    MySQL集群节点、节点组、数据副本、以及分区

    在 MySQL 集群中,节点是指存储着数据副本的 ndbd 进程,也就是一个指到节点组中节点的分区的拷贝。每个数据节点应该部署在独立的计算机上,以确保高可用性和避免单点故障。虽然也可以在一个机器上跑多个数据节点,...

    SQL2005动态表无限级分类存储过程

    其次,`sp_Column_Insert.sql` 存储过程用于插入新的记录到分类树中。在无限级分类中,新插入的记录需要指定其父节点。这个过程需要计算新记录的层级路径(如"1-2-3"),并确保所有相关字段的值被正确设置。同时,它...

    树父节点递归获取树子节点

    在计算机科学中,数据结构是组织和存储数据的方式,而树是一种非常常见且重要的数据结构。树形结构模拟了现实世界中的层次关系,每个节点可以有零个或多个子节点,除了根节点之外,每个节点都有一个父节点。在处理这...

    mysql 使用存储过程实现树节点的获取方法

    这样的一棵树,如何获取“高寅瑞”下的所有节点(一条sql语句是肯定搞不定的) 通过存储过程来写 DELIMITER // CREATE FUNCTION `getChildLst`(rootId INT) RETURNS varchar(1000) READS SQL DATA BEGIN DECLARE ...

    MySQL实现树状所有子节点查询的方法

    在MySQL中,可以创建一个名为`getChildLst`的存储函数,它接收一个根节点ID作为参数,并返回一个包含所有子节点ID的字符串。这个函数使用了一个`WHILE`循环,每次迭代都将当前节点的子节点ID添加到结果字符串中,...

    mysql+heartbeat+共享存储实施方案(mysql高可用集群).doc

    【MySQL+Heartbeat+共享存储实施方案】是一种实现MySQL高可用集群的方法,旨在确保数据库服务的稳定性和连续性。该方案采用HA(High Availability)双机热备软件Heartbeat,配合共享存储来实现实时的数据同步和故障...

    MySQL Cluster 7.3.7+CentOS7集群配置入门 MySQL双管理节点配置入门

    这里,`ndbcluster=1` 指定了使用MySQL Cluster,`socket` 设置了套接字文件的位置,而`datadir` 指定了数据节点的数据存储位置。 然后,我们关注config.ini文件,这是MySQL Cluster的全局配置文件,定义了集群的...

    mysql递归调用获取树节点(子树)借鉴.pdf

    总结来说,这个例子展示了如何使用MySQL的存储过程和递归方法来获取树形结构中某个节点及其所有子节点的信息。这种方法适用于数据量不大且层级不深的树结构,但如果树结构过于庞大,可能会导致性能问题,因为递归...

    mysql递归调用获取树节点(子树)[参考].pdf

    这个文档提到了如何使用存储过程来实现递归调用,以便获取树节点及其子树。以下是对相关知识点的详细说明: 首先,我们需要创建一个存储树形数据的表。这里创建了一个名为`treenodes`的表,包含三个字段:`id`...

    mysql存储与索引技术

    MySQL 数据库是一个广泛使用的开源关系型数据库管理系统,其性能很大程度上取决于存储引擎和索引的选取与使用。本文将深入探讨 MySQL 中的存储引擎和索引技术,帮助优化数据库性能。 首先,MySQL 提供了多种存储...

    B+树生成以及节点插入、删除与查询

    - 随机生成B+树的过程通常涉及确定节点的阶数(即每个节点的最大子节点数)和初始数据集。生成时需确保树的平衡性,即所有节点的子节点数量接近于树的阶数。 - 数据被分配到各个节点时,遵循B+树的规则,保证节点...

    根据子节点查找所有父节点

    每个节点可以有零个或多个子节点,除了根节点,每个节点都有一个父节点(除非它是根节点,根节点没有父节点)。问题的关键在于遍历这个树结构,从指定的子节点出发,向上追溯到所有的父节点。 一种常见的方法是深度...

Global site tag (gtag.js) - Google Analytics