用javascript生成了一棵树,如何删除上级节点的时候把下级所有节点的内容全部删除

职业小菜 2009-12-24 09:59:16
js检索数据库动态生成的一棵树.可以点击右键进行增删改查操作.
当点击父节点选择右键删除的时候,想从数据库中删除该节点下所有的子节点内容.
问题是:点击右键可以无限的增加下级节点.假设在某个节点上点右键,选择删除.可以通过js得到
该节点的主键.此时该节点下若有N个子节点.如何写sql语句进行删除?
oracle数据库的设计字段:type_id(primaryKey varchar50)UUID动态生成.
type_name(varchar200)
parent_id(varchar 50)(记录相应父节点的type_id).
问题出来了:删除父节点用delete from table where type_id = "当前节点的type_id";
获取第一子节点所有主键用select type_id from table where parent_id = "父节点的type_id";
然后一一删除.
获取第二节点呢,第三节点呢.第N节点呢..
没思路了.希望高手能给个思路.小弟十分感谢.
...全文
170 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
职业小菜 2009-12-24
  • 打赏
  • 举报
回复
谢谢五楼的解答.已经明白了.很感谢各位.
fatfoxz 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhiyexiaocai 的回复:]
引用 1 楼 wildwave 的回复:
delete from table1 a
where type_id in
(select type_id from table1
  start with type_id=:id --父节点id
  connect by prior type_id=parent_id)

我数据库学的不好.能给我解释下.start with 后面几句话的作用么.谢谢
[/Quote]
这里做了一个递归,是递归就要有递归的开始点和结束点,
开始点在这个start with里设定,结束点不设定表示一直递归到最后。
职业小菜 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wildwave 的回复:]
...
看看这个,讲得比较详细
http://762626559-qq-com.javaeye.com/blog/382983
[/Quote]
恩,明白了.很感谢.
小灰狼W 2009-12-24
  • 打赏
  • 举报
回复
...
看看这个,讲得比较详细
http://762626559-qq-com.javaeye.com/blog/382983
职业小菜 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wildwave 的回复:]
delete from table1 a
where type_id in
(select type_id from table1
  start with type_id=:id --父节点id
  connect by prior type_id=parent_id)
[/Quote]
我数据库学的不好.能给我解释下.start with 后面几句话的作用么.谢谢
小灰狼W 2009-12-24
  • 打赏
  • 举报
回复
delete from table1 a
where type_id in
(select type_id from table1
start with type_id=:id --父节点id
connect by prior type_id=parent_id)

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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