一个树形结构中记录的删除问题,头疼

来源:百度知道 编辑:UC知道 时间:2024/07/07 13:02:52
数据库表是这样的结构:id是主键。followid 表示他从属于哪条记录,如followid=1,那么他就是id为1的记录的子项。
id followid
1 0
2 1
3 1
4 2
. .
. .
. .

在显示树形结构时,可以通过嵌套递归来形成树:
1
-2
--4
-3
.
.

现在的问题是怎么在删除id=1的记录时也把所有子项也删了,我做了一个递归,但是老出错,请高手出主意!
附上我的代码:

<% sub taskdel
set rs=server.CreateObject("ADODB.RecordSet")
sql="select * from task where task_id="&request("task_id")
rs.open sql,conn,1,3
response.Write rs("task_id")
dim delone
delone=rs("task_id")

rs.Delete
rs.update

delson delone
rs.close
set rs=nothing
alert "已经删除该记录和所有子项" , "?menu=mytask"
end sub
function delson(selec)
set rs1=server.CreateObject("ADODB.RecordSet")
sql1="select * from task where task_followid="&selec
rs1.open sql1,conn,1

问题在于你的递归每次运行的时候都会打开一个rs1对象,而且对下一级进行操作的时候上一级的并没有关闭,所以再打开一个rs1时就出错了。

建议使用数组保存下一级id号,先关闭rs1对象,再进行递归