在一张树形结构的表中有一个树形模板
id    name    pid     projectID(0表示模板)
现在每建一个项目
就会复制这份模板 
怎样实现复制

解决方案 »

  1.   

    1   f1   0   0
    2   f2   0   0
    3   f11  1   0
    4   f12  1   0
    5   f111 3   0---复制上面的如下------6   f1   0   1(某个项目的ID)
    7   f11  6   1 
    8   f111 7   1
    9   f12  6   1
    10  f2   0   1
      

  2.   


    id    name    pid    projectID
    1     f1      0      0 
    2     f2      0      0 
    3     f11     1      0 
    4     f12     1      0 
    5     f111    3      0 ---复制上面的如下------ 6     f1      0      1(某个项目的ID) 
    7     f11     6      1 
    8     f111    7      1 
    9     f12     6      1 
    10    f2      0      1
      

  3.   

    id是自动增加的,如果项目2又复制一次模板的数据
    那表的数据就应该是:id    name    pid    projectID
    1     f1      0      0 
    2     f2      0      0 
    3     f11     1      0 
    4     f12     1      0 
    5     f111    3      0 6     f1      0      1(某个项目的ID) 
    7     f11     6      1 
    8     f111    7      1 
    9     f12     6      1 
    10    f2      0      1
    11     f1      0      2(某个项目的ID) 
    12     f11     11     2 
    13     f111    12     2 
    14     f12     11     2 
    15     f2      0      2
      

  4.   

    表结构有问题如果当初需求就是这样很明显,应该将projectID也设为主键的如果是这样就不必映射id,pid了就像你给的数据id自增了,pid还要使用某种方法映射,很累
    如果可以的话,很简单,把projectID和表中原主键设为联合主键,就OK了
      

  5.   

    不明白,我现在就是不知道pid该怎样对应上去
      

  6.   


    如果把projectID也设为主键如下:id    name    pid    projectID
    1     f1      0      0 
    2     f2      0      0 
    3     f11     1      0 
    4     f12     1      0 
    5     f111    3      0 1     f1      0      1 
    2     f2      0      1 
    3     f11     1      1 
    4     f12     1      1 
    5     f111    3      1
    1     f1      0      2 
    2     f2      0      2
    3     f11     1      2 
    4     f12     1      2 
    5     f111    3      2
     lz明白没 ^_^
      

  7.   


    那你就只能以新增的id为根,重新画树,然后在读整棵树,然后insert
      

  8.   

    能不能贴个示例,insert的时候不知道pid怎么处理
      

  9.   


     ... 这个树不是你自己画的??你那个怎么弄,这个就这么弄咯~~不会让我帮你写代码吧  ^o^明白原来就一点点来吧  lz这也是学习的过程~~^_^
      

  10.   

    给楼主简单提个思路:
    可以先把要复制的项目的结构放到表变量或者临时表中,然后根据表中现有数据的最大ID设置一个将插入数据的ID,然后在构造的表变量里面根据这个ID构造复制后项目各个节点的ID,然后插进正式数据表。
    可以用事务来保证数据正确。