无限级分类(非递归算法/存储过程版/GUID主键)完整数据库示例_(3)删除记录

简介: -- ============================= -- Author:   -- Description:  -- Return     : 0删除正常,-1父类下还有子类 -- =========================== Alter PROCEDURE [dbo].

-- =============================
-- Author:  <杨俊明,Jimmy.yang@cntvs.com or yjmyzz@126.com>
-- Description: <无限级分类_删除分类>
-- Return     : 0删除正常,-1父类下还有子类
-- ===========================
Alter PROCEDURE [dbo].[up_Class_DeleteEx]
 @clsId uniqueidentifier, --要删除的分类
 @withChild bit     --是否级联删除子类
AS
BEGIN
 SET NOCOUNT ON;
 Declare @so_MaxOrders int;
 Declare @s_Childs int;
 Declare @clsType Nvarchar(50);
 Declare @O_RootId int;
 
 Select @O_RootId = F_RootId,@clsType = F_Type From T_Class where F_ID=@clsId;

 If (@WithChild=1)  
  begin
   Select @so_maxOrders=max(F_orders) From T_class Where F_ID=@clsId or F_ParentIdStr like '%' + Convert(varchar(50),@clsId) + '%'; --得到自身系的最大排序号
   Select @s_Childs= Count(F_ID) from t_Class Where F_ID=@clsId or F_ParentIdStr like '%' + Convert(varchar(50),@clsId) + '%';
   Delete from T_Class where ','+F_parentIdStr+',' like '%' + convert(varchar(100),@clsId) + '%'
   Delete from T_Class Where F_Id=@ClsId 
   Update T_Class Set F_Orders = F_Orders - @s_childs where F_Type=@clsType And F_RootId=@O_RootId And F_Orders > @so_maxOrders;
   return 0
  end
 else  
  --如果不级联删除,又有子节点,则返回-1 
  If exists(select F_id from T_Class where ',' + F_parentIdStr + ',' like '%' + convert(varchar(100),@clsId) + '%')  
   return -1
  else
   begin
    Select @so_maxOrders=max(F_orders) From T_class Where F_ID=@clsId or F_ParentIdStr like '%' + Convert(varchar(50),@clsId) + '%'; --得到自身系的最大排序号
    Select @s_Childs= 1;
    Delete from T_Class Where F_Id=@ClsId;
    Update T_Class Set F_Orders = F_Orders - @s_childs where F_Type=@clsType And F_RootId=@O_RootId And F_Orders > @so_maxOrders;
    return 0
   end
   
END

目录
相关文章
|
11天前
|
机器学习/深度学习 数据采集 监控
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
机器学习-特征选择:如何使用递归特征消除算法自动筛选出最优特征?
126 0
|
11天前
|
存储 缓存 算法
【数据结构与算法】【小白也能学的数据结构与算法】递归 分治 迭代 动态规划 无从下手?一文通!!!
【数据结构与算法】【小白也能学的数据结构与算法】递归 分治 迭代 动态规划 无从下手?一文通!!!
|
11天前
|
存储 SQL 数据库
数据库sql语句-----游标和存储过程
数据库sql语句-----游标和存储过程
18 1
|
11天前
|
算法
算法系列--递归(一)--与链表有关(上)
算法系列--递归(一)--与链表有关
32 0
|
11天前
|
算法 Go 分布式数据库
构建高可用的分布式数据库集群:使用Go语言与Raft共识算法
随着数据量的爆炸式增长,单一数据库服务器已难以满足高可用性和可扩展性的需求。在本文中,我们将探讨如何使用Go语言结合Raft共识算法来构建一个高可用的分布式数据库集群。我们不仅会介绍Raft算法的基本原理,还会详细阐述如何利用Go语言的并发特性和网络编程能力来实现这一目标。此外,我们还将分析构建过程中可能遇到的挑战和解决方案,为读者提供一个完整的实践指南。
|
11天前
|
存储 数据库
sqlserver------数据库的存储过程(练习)
sqlserver------数据库的存储过程(练习)
13 1
|
11天前
|
存储 缓存 负载均衡
数据库分库分表常见算法
数据库分库分表常见算法
|
11天前
|
算法
R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例
R语言贝叶斯推断与MCMC:实现Metropolis-Hastings 采样算法示例
|
11天前
|
搜索推荐 C语言 C++
【排序算法】C语言实现归并排序,包括递归和迭代两个版本
【排序算法】C语言实现归并排序,包括递归和迭代两个版本
|
11天前
|
存储 算法 搜索推荐
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)