SQL Server 同步更新父节点下的子节点数量

本文详细介绍了在数据库中如何通过SQL更新子节点和父节点的数量,包括自动加减和统一处理两种方法,并提供了初始化子节点数量的SQL语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

弄系统的应该经常碰到子节点、父节点之类的词汇,无论哪一种都是某个表里面的一条记录,所不同的是:子节点记录了父节点的编号信息,父节点只需要记录其下有多少个子节点即可。

父节点对于其下子节点的记录,可以通过两个方法,用SQL来表示如下:

--1、随着添加、删除节点时自动加减
declare @wfid int;--节点编号
set @wfid=100;
update  S_WORKFLOWNODE set CHILDNODECOUNT=CHILDNODECOUNT+1 where S_WORKFLOWNODE_=
(select PARENTNODE_ID from S_WORKFLOWNODE where  S_WORKFLOWNODE_=@wfid);

--2、不管添加或删除,处理都一样
update  S_WORKFLOWNODE set CHILDNODECOUNT=(
select count(S_WORKFLOWNODE_) from S_WORKFLOWNODE where PARENTNODE_ID=(
select PARENTNODE_ID from S_WORKFLOWNODE where S_WORKFLOWNODE_=@wfid) ) 
where S_WORKFLOWNODE_ =(select PARENTNODE_ID from S_WORKFLOWNODE where S_WORKFLOWNODE_=@wfid));

 

以上是只知道子节点编号的情况写的,要是知道父节点就更简单了:

--1、随着添加、删除节点时自动加减
declare @wfid int;--节点编号
declare @pwfid int;--父级节点编号
set @wfid=100;
select @pwfid = PARENTNODE_ID from S_WORKFLOWNODE where S_WORKFLOWNODE_=@wfid;
update  S_WORKFLOWNODE set CHILDNODECOUNT=CHILDNODECOUNT+1 where S_WORKFLOWNODE_=@pwfid;

--2、不管添加或删除,处理都一样
update  S_WORKFLOWNODE set CHILDNODECOUNT=(
select count(S_WORKFLOWNODE_) from S_WORKFLOWNODE where PARENTNODE_ID=@pwfid) 
where S_WORKFLOWNODE_ =@pwfid;

 

第一种方法的操作有个前提条件,就是每次的数据都得对,只要有一次不对,以后的数据都是错的,父节点子级数量的初始化可以用下面的SQL来搞定:

update S_WORKFLOWNODE set CHILDNODECOUNT=aa.COU from (
select count(*) as COU,PARENTNODE_ID as S_ID 
from S_WORKFLOWNODE where PARENTNODE_ID>0  
group by PARENTNODE_ID
) as aa
where S_WORKFLOWNODE_=aa.S_ID

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值