当点击父节点选择右键删除的时候,想从数据库中删除该节点下所有的子节点内容.
问题是:点击右键可以无限的增加下级节点.假设在某个节点上点右键,选择删除.可以通过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节点呢..
没思路了.希望高手能给个思路.小弟十分感谢.
6 个解决方案
#1
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)
where type_id in
(select type_id from table1
start with type_id=:id --父节点id
connect by prior type_id=parent_id)
#2
我数据库学的不好.能给我解释下.start with 后面几句话的作用么.谢谢
#3
...
看看这个,讲得比较详细
http://762626559-qq-com.javaeye.com/blog/382983
看看这个,讲得比较详细
http://762626559-qq-com.javaeye.com/blog/382983
#4
恩,明白了.很感谢.
#5
这里做了一个递归,是递归就要有递归的开始点和结束点,
开始点在这个start with里设定,结束点不设定表示一直递归到最后。
#6
谢谢五楼的解答.已经明白了.很感谢各位.
#1
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)
where type_id in
(select type_id from table1
start with type_id=:id --父节点id
connect by prior type_id=parent_id)
#2
我数据库学的不好.能给我解释下.start with 后面几句话的作用么.谢谢
#3
...
看看这个,讲得比较详细
http://762626559-qq-com.javaeye.com/blog/382983
看看这个,讲得比较详细
http://762626559-qq-com.javaeye.com/blog/382983
#4
恩,明白了.很感谢.
#5
这里做了一个递归,是递归就要有递归的开始点和结束点,
开始点在这个start with里设定,结束点不设定表示一直递归到最后。
#6
谢谢五楼的解答.已经明白了.很感谢各位.