大家帮忙解决下~~~删除一个菜单时自动删除其子菜单及子菜单下的子菜单。。。

CFsoftlover 2007-09-12 10:23:56
数据库表字段位,ID,NAME,ParentID(父ID)

求删除一个菜单时自动删除其子菜单及子菜单下的子菜单。。。 的SQL语句...
...全文
145 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cat_hsfz 2007-09-13
  • 打赏
  • 举报
回复
请参考:
http://www.cnblogs.com/cathsfz/archive/2006/12/12/589464.html

只要你的表有Path字段,删除所有后代节点就容易了。
songle912 2007-09-13
  • 打赏
  • 举报
回复
递啊归
panzi667 2007-09-13
  • 打赏
  • 举报
回复
学习
heqi915 2007-09-13
  • 打赏
  • 举报
回复
友情UP一下
qufo 2007-09-12
  • 打赏
  • 举报
回复
外键引用,当删除的时候删除。汗。
数据库本来就有的功能呀。
CFsoftlover 2007-09-12
  • 打赏
  • 举报
回复
谢谢dragonlyf(虫) ..我试试看.
CFsoftlover 2007-09-12
  • 打赏
  • 举报
回复
现在一个关键问题就是如何查询出当前菜单的所有子菜单以及子菜单下的子菜单。。。
dragonlyf 2007-09-12
  • 打赏
  • 举报
回复
你用下面这个SQL函数将子节点的数据都找出来,再将这些数据删掉即可
--测试数据
CREATE TABLE tb(ID char(3),PID char(3),Name nvarchar(10))
INSERT tb SELECT '001',NULL ,'山东省'
UNION ALL SELECT '002','001','烟台市'
UNION ALL SELECT '004','002','招远市'
UNION ALL SELECT '003','001','青岛市'
UNION ALL SELECT '005',NULL ,'四会市'
UNION ALL SELECT '006','005','清远市'
UNION ALL SELECT '007','006','小分市'
GO

--查询指定节点及其所有子节点的函数
CREATE FUNCTION f_Cid(@ID char(3))
RETURNS @t_Level TABLE(ID char(3),Level int)
AS
BEGIN
DECLARE @Level int
SET @Level=1
INSERT @t_Level SELECT @ID,@Level
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level
FROM tb a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END
RETURN
END
GO

--调用函数查询002及其所有子节点
SELECT a.*
FROM tb a,f_Cid('002') b
WHERE a.ID=b.ID
/*--结果
ID PID Name
------ ------- ----------
002 001 烟台市
004 002 招远市
--*/
dilong_hcj 2007-09-12
  • 打赏
  • 举报
回复
用触发器是个很好的方法
代码写的话只好循环删
sunxw18 2007-09-12
  • 打赏
  • 举报
回复
触发器

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧