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

时间:2013-02-07 14:20:39

标签: mysql sql definition auto-increment

我有一个预先存在的表,包含'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

有什么建议吗?:)

16 个答案:

答案 0 :(得分:105)

试试这个

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

答案 1 :(得分:60)

如果您不关心自动ID是否用作PRIMARY KEY,您可以这样做

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

我刚刚做了这件事并且有所作为。

答案 2 :(得分:25)

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

 ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT primary key

答案 3 :(得分:20)

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

ALTER TABLE nametable DROP PRIMARY KEY

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

ALTER TABLE nametable ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY

答案 4 :(得分: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 :(得分: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;

答案 6 :(得分:3)

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

替换

ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT

ALTER TABLE users MODIFY id int NOT NULL AUTO_INCREMENT;

答案 7 :(得分:2)

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

整数参数基于我的默认sql设置 祝你有愉快的一天

答案 8 :(得分:2)

ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT primary key FIRST

答案 9 :(得分:2)

如果运行以下命令:

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;

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

答案 10 :(得分:0)

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

ALTER TABLE Table1
DROP CONSTRAINT PK_Table1_Col1
GO

然后按原样编写查询。

答案 11 :(得分:0)

ALTER TABLE `table` ADD `id` INT NOT NULL AUTO_INCREMENT unique

尝试一下。无需删除主键。

答案 12 :(得分:0)

对于PostgreSQL,您必须使用SERIAL而不是auto_increment。

ALTER TABLE your_table_name ADD COLUMN id SERIAL NOT NULL PRIMARY KEY

答案 13 :(得分:0)

这个 SQL 请求对我有用:

ALTER TABLE users
CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT ;

答案 14 :(得分:0)

从表中删除主索引:

ALTER TABLE `tableName` DROP INDEX `PRIMARY`;

然后添加 id 列(没有主索引)。我使用了一个 big int,因为我将有大量数据,但 INT(11) 应该也能正常工作:

ALTER TABLE `tableName` ADD COLUMN `id` BIGINT(11) NOT NULL FIRST;

然后使用自动增量修改列(感谢 php)。它必须是主键:

ALTER TABLE `tableName ` MODIFY COLUMN `id` BIGINT(11) UNSIGNED PRIMARY KEY AUTO_INCREMENT;

我刚刚在我的桌子上试过这个,它似乎奏效了。

答案 15 :(得分:-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。