当前位置:编程学习 > C#/ASP.NET >>

一个关于无限级节点的导入问题,希望能得到解决!


如上图所示,该表是一个无限级的节点的表A,其中PID表示父节点,-1表示根节点,我现在要将这些数据都插入到一个与该表结构一样的表B中,注意都是自增主键,B表中的当前自增ID与A表中的不一样,当插入到B表后对应A表中的子节点也要随之改变,也就是在B表中的父子关系与A表中的还是一样,只是ID可能不一样,希望能得到前辈的帮助,谢谢… --------------------编程问答-------------------- 最简单的处理方式就是B表中至少要包含TID、TPID两列以上的 字段信息,这样简单有效的保证父子关系保持一致,还没必要再插入B表后再对A做出调整 --------------------编程问答--------------------
引用 1 楼 Return_false 的回复:
最简单的处理方式就是B表中至少要包含TID、TPID两列以上的 字段信息,这样简单有效的保证父子关系保持一致,还没必要再插入B表后再对A做出调整

不好意思,上面有简单介绍:“我现在要将这些数据都插入到一个与该表结构一样的表B中”,表结构就是一样的,只是说当插入到B表的时候,TID可能就不一样的了,那么TPID也要做对应的改变… --------------------编程问答-------------------- 既然是无限级的,只好用递归了,建议数据操作用事务:
void Insert(DataRow row)
{
    // 查询A表中的子结点
    DataRow[] subrows = SelectSubRows(row["TID"]); 
    /// 插入到B表,返回自动编号
    int newid = InsertData(row);
    foreach (DataRow subrow in subrows)
    {
        subrow["TPID"] = newid;
        Insert(subrow);
    }
}
--------------------编程问答-------------------- 这里设计上的毛病出在所谓“自增”上。如果你想跨表保存具有id的值,那么你的id就应该设计为一个在不同表中也绝对不会重复的东西,而不是简单地搞什么“自增”。例如id为“A1、A2、A3......”的记录对应地转移到别的表里其id可以自动变为“B1、B2、B3......”。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,