实现删除指定节点及所有子结点的处理触发器
2010-03-09 09:45
274 查看
CREATE TABLE tb(ID int,PID int,Name nvarchar(10)) INSERT tb SELECT 1,NULL,'山东省' UNION ALL SELECT 2,1 ,'烟台市' UNION ALL SELECT 4,2 ,'招远市' UNION ALL SELECT 3,1 ,'青岛市' UNION ALL SELECT 5,NULL,'四会市' UNION ALL SELECT 6,5 ,'清远市' UNION ALL SELECT 7,6 ,'小分市' GO --删除处理触发器(同步删除被删除节点的所有子节点) CREATE TRIGGER tr_DeleteNode ON tb FOR DELETE AS IF @@ROWCOUNT=0 RETURN --如果没有满足删除条件的记录,直接退出 --查找所有被删除节点的子节点 DECLARE @t TABLE(ID int,Level int) DECLARE @Level int SET @Level=1 INSERT @t SELECT a.ID,@Level FROM tb a,deleted d WHERE a.PID=d.ID WHILE @@ROWCOUNT>0 BEGIN SET @Level=@Level+1 INSERT @t SELECT a.ID,@Level FROM tb a,@t b WHERE a.PID=b.ID AND b.Level=@Level-1 END DELETE a FROM tb a,@t b WHERE a.ID=b.ID GO --删除 DELETE FROM tb WHERE ID in(2,3,5) SELECT * FROM tb /*--结果 ID PID Name ---------------- ----------------- ---------- 1 NULL 山东省 --*/
相关文章推荐
- 实现删除指定结点及所有子节点的处理触发器.sql
- 批处理实现删除所在的文件夹的所有svn文件
- c/c++整理--实现删除字符串所有指定字符
- zTree实现删除某个父节点后删除其下所有节点
- js 删除一个节点的所有子元素节点的函数实现
- c实现对给定线性链表head按节点值非递减次序输出所有节点,并把刚输出的节点从链表中删除
- 【Python/PE】python中实现文件操作的几种功能(删除指定目录下的所有内容,文件复制等)
- windows api 实现删除指定目录下的所有文件(包括子文件夹下的所有文件)
- java 递归实现删除或查询指定文件夹下的所有文件
- 数据结构:单链表(二)之链表节点排序,升序插入数据,删除指定的所有节点,翻转链表操作
- python3.6深度学习图片集处理项目源代码(为cnn等准备图片集合,批量生成、删除、改名、旋转、调整图片大小,包括删除指定路径下所有文件)
- 如何在O(1)时间删除链表指定节点(Java实现)
- 使用递归删除树形结构的所有子节点(java和mysql实现)
- 编程实现删除字符串中所有指定的字符
- 复制指定节点及其所有子节点到指定结点的处理示例(借鉴方式排序法).sql
- windows api 实现删除指定目录下的所有文件(包括子文件夹下的所有文件)
- js实现删除div下所有子节点
- 在带头节点的单链表中,删除所有值为x的节点(Java实现)
- PHP实现批量清空删除指定文件夹所有内容的方法
- windows api 实现删除指定目录下的所有文件(包括子文件夹下的所有文件)