存在表后添加新ID(自动增量)的麻烦

Bob*_*obo 16 mysql auto-increment

我有一个38.000记录的表,但没有任何自动增量列ID.
现在我要添加一个ID列,我想知道会有麻烦吗?

A.B*_*uin 34

只有当您的表与其他人没有关系时,您才可以毫无问题地添加.

您必须删除旧主键并相应地上载表(可能在旧主键上添加唯一索引).

继续这样:

  • 转储数据库

  • 像这样删除主键

ALTER TABLE XXX DROP PRIMARY KEY
Run Code Online (Sandbox Code Playgroud)
  • 像这样添加新列
ALTER TABLE XXX add column Id INT NOT NULL AUTO_INCREMENT FIRST, ADD primary KEY Id(Id)
Run Code Online (Sandbox Code Playgroud)

将查看该表并更新AutoInc.


Goi*_*pal 21

这将为MySQL表添加一个自动增量ID:

ALTER TABLE  `your_table_name` ADD  `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
Run Code Online (Sandbox Code Playgroud)

根据您桌面上的数据量,可能需要几分钟才能完成.


yur*_*lav 7

这是我尝试使用MySQL Workbench的解决方案:

ALTER TABLE `tableName` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT  ;
Run Code Online (Sandbox Code Playgroud)

我不知道这是否正确,但我还没有注意到我的Java EE应用程序有任何问题.


Gre*_*mer -3

您对任何字段的定义更改的问题是更改是“破坏性的”。最好将此类更改视为数据迁移。我还没有使用 MySQL 完成此操作,但必须向 SQL Server 添加自动编号。基本思想是一样的。

检查文档,因为 MySQL 可能有一种在不重置字段的情况下添加 aut 增量的机制。如果是这样,通过 SQL 来解决问题。一般来说,我建议不要使用工具以视觉方式进行这些类型的更改,因为大多数工具的方法都具有很大的破坏性。