更改引用表上的主键

时间:2011-06-09 03:37:33

标签: mysql foreign-keys constraints

我想知道是否有一种“简单”的方法来更改自动增量列的UUID为36个字符的主键。问题是这个表至少被另外25个表(大约50列)引用

我正在使用InnoDB和外键约束。

1 个答案:

答案 0 :(得分:2)

这似乎不太难:

  1. 确保所有外键约束都定义为ON UPDATE CASCADE(因此,当您更新键值时,子项的fks也会更新)
  2. 使用整数更新每个值(当然还是文本)
  3. ALTER TABLE my_table my_id_column INT AUTO_INCREMENT
  4. 如何从键中选择新的整数值取决于您。也许只是使用这个简单的查询来按照指定的顺序从1开始编号:

    set @i:=0;
    update my_table set
    my_id_column = (@i := @i + 1)
    order by some_ordering_column;
    

    仅供参考,我刚刚在这里测试了所有代码并且有效。