我看到很多几乎相似的问题都有明显的答案,但我相当确定这个问题还没有出现在这里。
我需要向现有的表中添加一个自动递增的id列,并将其设置为主键。我不能丢失任何现有的数据。
我可以成功地对表结构进行更改,但在新列中得到一个关于截断数据的错误。当我查看数据时,新的自动递增列中的每个值都是null (因此不是惟一的)。
如何回填这些值以确保我的主键的唯一性?
*我倾向于避免将现有数据转储到临时表中,如果有更简单的解决方案,则避免重新插入。
当前脚本:
alter table the_table add new_field int first;
alter table the_table drop primary key, add primary key (new_field);
alter table the_table change new_field new_field int unsigned not null auto_increment;我以这种顺序运行脚本,因为我不能有一个不是主键的自动递增列。
(MySQL 5.3)
发布于 2011-07-27 06:36:04
尝试创建列,将其设置为主键并一次性自动递增
ALTER TABLE `the_table` ADD `new_field` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 发布于 2011-07-27 06:44:11
只需添加一个自动增量字段,而不是主键:
ALTER TABLE `the_table` ADD `new_field` INT NOT NULL AUTO_INCREMENThttps://stackoverflow.com/questions/6837315
复制相似问题