首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL在不使用auto_increment的情况下使用递增的值填充新列

问MySQL在不使用auto_increment的情况下使用递增的值填充新列
EN

Stack Overflow用户
提问于 2011-07-27 06:21:09
回答 2查看 7.2K关注 0票数 4

我看到很多几乎相似的问题都有明显的答案,但我相当确定这个问题还没有出现在这里。

我需要向现有的表中添加一个自动递增的id列,并将其设置为主键。我不能丢失任何现有的数据。

我可以成功地对表结构进行更改,但在新列中得到一个关于截断数据的错误。当我查看数据时,新的自动递增列中的每个值都是null (因此不是惟一的)。

如何回填这些值以确保我的主键的唯一性?

*我倾向于避免将现有数据转储到临时表中,如果有更简单的解决方案,则避免重新插入。

当前脚本:

代码语言:javascript
复制
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)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-27 06:36:04

尝试创建列,将其设置为主键并一次性自动递增

代码语言:javascript
复制
ALTER TABLE `the_table` ADD `new_field` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 
票数 13
EN

Stack Overflow用户

发布于 2011-07-27 06:44:11

只需添加一个自动增量字段,而不是主键:

代码语言:javascript
复制
ALTER TABLE `the_table` ADD `new_field` INT NOT NULL AUTO_INCREMENT
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6837315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档