一个关于无限级节点的导入问题,希望能得到解决!
如上图所示,该表是一个无限级的节点的表A,其中PID表示父节点,-1表示根节点,我现在要将这些数据都插入到一个与该表结构一样的表B中,注意都是自增主键,B表中的当前自增ID与A表中的不一样,当插入到B表后对应A表中的子节点也要随之改变,也就是在B表中的父子关系与A表中的还是一样,只是ID可能不一样,希望能得到前辈的帮助,谢谢… --------------------编程问答-------------------- 最简单的处理方式就是B表中至少要包含TID、TPID两列以上的 字段信息,这样简单有效的保证父子关系保持一致,还没必要再插入B表后再对A做出调整 --------------------编程问答--------------------
不好意思,上面有简单介绍:“我现在要将这些数据都插入到一个与该表结构一样的表B中”,表结构就是一样的,只是说当插入到B表的时候,TID可能就不一样的了,那么TPID也要做对应的改变… --------------------编程问答-------------------- 既然是无限级的,只好用递归了,建议数据操作用事务:
void Insert(DataRow row)--------------------编程问答-------------------- 这里设计上的毛病出在所谓“自增”上。如果你想跨表保存具有id的值,那么你的id就应该设计为一个在不同表中也绝对不会重复的东西,而不是简单地搞什么“自增”。例如id为“A1、A2、A3......”的记录对应地转移到别的表里其id可以自动变为“B1、B2、B3......”。
{
// 查询A表中的子结点
DataRow[] subrows = SelectSubRows(row["TID"]);
/// 插入到B表,返回自动编号
int newid = InsertData(row);
foreach (DataRow subrow in subrows)
{
subrow["TPID"] = newid;
Insert(subrow);
}
}
补充:.NET技术 , C#