如何迁移递归表?

时间:2011-03-02 21:48:34

标签: mysql

假设我有一个表category,其中包含3列,idparent_idname

我有几个像这样的表,我想将它们合并为一个。目前,他们的ID会发生冲突(在数据库之间不是唯一的)所以我需要重新识别它们。如果我id auto_increment我可以复制所有其他列,但parent_id将无法正常链接。是否有一些神奇的方法可以让parent_id指向正确的新ID?

寻找类似

的内容
INSERT INTO newtable (parent_id, name) SELECT ???, name FROM oldtable

2 个答案:

答案 0 :(得分:1)

怎么样

  • 使用包含旧表名称和旧ID(oldid,oldtablename)以及新ID的列生成新表
  • 添加新列'newparentid'
  • 将每行的newparentid更新为(SELECT newid FROM newtable nt WHERE oldtablename = row.oldtablename and nt.oldid = row.parent_id

答案 1 :(得分:0)

我想你可以添加一个old_id列,这样你仍然可以拥有原始id,并且可以对表进行连续更新,以修改所有parent_id以指向新的auto_inc id。您显然必须首先杀死表中的任何外键要求,并在完成所有更改后重新构建它们 - Patrick