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

时间:2010-08-19 07:35:44

标签: mysql tree

我在数据库中使用id和parend id描述了一棵树。由于历史(原始程序员)原因,id是字符串。我需要将id转换为自动增量整数字段并保持结构相同。我该怎么做?
我正在使用mysql。

1 个答案:

答案 0 :(得分:2)

  1. 添加新的主键,自动增加数字列。出于本练习的目的,我们将其称为“new_id”(不要将其作为主键)。一旦添加,它将自动填充值,因为它是自动增量。
  2. 为新的parent_id添加另一个数字列,现在我们称之为“new_parent_id”。
  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”列,并将新列重命名为旧名称。