代码之家  ›  专栏  ›  技术社区  ›  Daniel

将基于字符串的结构转换为基于自动增量的树结构

  •  0
  • Daniel  · 技术社区  · 14 年前

    我的数据库中有一个使用id和parend id描述的树。由于历史(原始程序员)原因,id是字符串。我需要将ID转换为自动递增整数字段并保持结构不变。我该怎么做?
    我在使用MySQL。

    1 回复  |  直到 14 年前
        1
  •  2
  •   wolfgangsz    14 年前
    1. 添加新的主键,自动递增数字列。为了这个练习的目的,我们将它称为“新ID”(现在不要把它作为主键)。这将在添加后自动填充值,因为它是自动递增的。
    2. 为新的父节点添加另一个数字列,我们现在称之为“新的父节点”。
    3. 现在,用正确的值更新“new_parent_id”列,使用
      UPDATE my_table as t1, my_table as t2, set t1.new_parent_id = t2.new_id where t2.id = t1.parent_id
    4. 最后,删除旧的主键,并使“new_id”成为新的主键。如果使用innodb,还应将“new_parent_id”作为主键的外键。
    5. 删除旧的“id”和“parent_id”列,并将新列重命名为旧名称。