将自动增量ID添加到现有表?

问题描述 投票:61回答:13

我有一个预先存在的表,包含'fname','lname','email','password'和'ip'。但现在我想要一个自动增量列。但是,当我输入:

ALTER TABLE users
ADD id int NOT NULL AUTO_INCREMENT

我得到以下内容:

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

有什么建议吗?:)

mysql sql definition auto-increment
13个回答
108
投票

试试这个

ALTER TABLE `users` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY

2
投票
ALTER TABLE users CHANGE id int( 30 ) NOT NULL AUTO_INCREMENT

整数参数是基于我的默认sql设置有一个美好的一天


0
投票

检查已存在的具有不同列的主键。如果是,请使用以下方式删除主键:

ALTER TABLE Table1
DROP CONSTRAINT PK_Table1_Col1
GO

然后按原样编写查询。


0
投票
ALTER TABLE `table` ADD `id` INT NOT NULL AUTO_INCREMENT unique

试试这个。无需删除主键。


-1
投票

继续这样:

Make a dump of your database first

Remove the primary key like that

ALTER TABLE yourtable DROP PRIMARY KEY

Add the new column like that

ALTER TABLE yourtable add column Id INT NOT NULL AUTO_INCREMENT FIRST,ADD primary KEY Id(Id)

将查看该表并更新AutoInc。


64
投票

如果您不关心auto-id是否用作PRIMARY KEY,您可以这样做

ALTER TABLE `myTable` ADD COLUMN `id` INT AUTO_INCREMENT UNIQUE FIRST;

我刚刚做了这个,它起了作用。


27
投票

如果要在现有表中添加AUTO_INCREMENT,需要运行以下SQL命令:

 ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT primary key

20
投票

首先,您必须删除表的主键

ALTER TABLE nametable DROP PRIMARY KEY

现在哟可以添加自动增量...

ALTER TABLE nametable ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY

14
投票

那么,你必须首先删除你有的auto_incrementprimary key,然后添加你的,如下:

-- drop auto_increment capability
alter table `users` modify column id INT NOT NULL;
-- in one line, drop primary key and rebuild one
alter table `users` drop primary key, add primary key(id);
-- re add the auto_increment capability, last value is remembered
alter table `users` modify column id INT NOT NULL AUTO_INCREMENT;

5
投票

删除表的主键(如果存在):

 ALTER TABLE `tableName` DROP PRIMARY KEY;

向表中添加自动增量列:

ALTER TABLE `tableName` ADD `Column_name` INT PRIMARY KEY AUTO_INCREMENT;

修改我们要考虑作为主键的列:

alter table `tableName` modify column `Column_name` INT NOT NULL AUTO_INCREMENT PRIMARY KEY;

4
投票

如果您运行以下命令:

ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT PRIMARY KEY;

这将显示错误:

ERROR 1060 (42S21): Duplicate column name 'id'

这是因为此命令将尝试将名为id的新列添加到现有表中。

要修改现有列,必须使用以下命令:

ALTER TABLE users MODIFY id int NOT NULL AUTO_INCREMENT PRIMARY KEY;

这应该适用于更改现有的列约束....!


3
投票

只需将ADD更改为MODIFY就可以了!

更换

ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT

ALTER TABLE users MODIFY id int NOT NULL AUTO_INCREMENT;

2
投票
ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT primary key FIRST
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.