将MySQL列更改为AUTO_INCREMENT

问题描述 投票:174回答:19

我试图修改一个表,使其主键列AUTO_INCREMENT事后。我尝试了以下SQL,但得到了语法错误通知。

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

我做错了还是不可能?

+--------------------+
| VERSION()          |
+--------------------+
| 5.0.75-0ubuntu10.2 |
+--------------------+
sql mysql alter-table
19个回答
346
投票
ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

2
投票

以下声明有效。请注意,您需要再次为列名称提及数据类型(重新声明列之前的数据类型)。

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT;

2
投票

如果上述任何一项都不能尝试。这就是我在MYSQL中所做的,是的,你需要写两次列名(document_id)。

ALTER TABLE document
CHANGE COLUMN document_id document_id INT(11) NOT NULL AUTO_INCREMENT ;

1
投票

要修改mysql中的列,我们使用alter和modify关键字。假设我们创建了一个表格,如:

create table emp(
    id varchar(20),
    ename varchar(20),
    salary float
);

现在我们要将列id的类型修改为带有自动增量的整数。您可以使用以下命令执行此操作:

alter table emp modify column id int(10) auto_increment;

1
投票

上一个表格语法:

CREATE TABLE apim_log_request (TransactionId varchar(50) DEFAULT NULL);

要将TransactionId更改为自动增量,请使用此查询

ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT auto_increment;

1
投票
alter table tbl_user MODIFY COLUMN id int(10) auto_increment;

1
投票

像这样:

alter table document modify column id int(11) auto_increment;


0
投票

在重新定义列时,必须再次指定数据类型并将auto_increment添加到它,因为它是数据类型的一部分。

ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;

0
投票

同时将列设置为主键和auto_increment:

  mysql> ALTER TABLE persons MODIFY COLUMN personID INT auto_increment PRIMARY KEY;
    Query OK, 10 rows affected (0.77 sec)
    Records: 10  Duplicates: 0  Warnings: 0

    mysql>

0
投票

ALTER TABLE table_name MODIFY COLUMN id数据类型auto_increment;


-3
投票

使用以下查询:

ALTER TABLE YourTable DROP COLUMN IDCol

ALTER TABLE YourTable ADD IDCol INT IDENTITY(1,1)

67
投票

Roman是正确的,但请注意,auto_increment列必须是PRIMARY KEY或UNIQUE KEY的一部分(在几乎100%的情况下,它应该是构成PRIMARY KEY的唯一列):

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY

9
投票

在我的情况下,它只有当我把not null。我认为这是一个约束。

ALTER TABLE document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT;

6
投票

执行此操作的SQL将是:

ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;

您的SQL可能无法正常工作有几个原因。首先,您必须重新指定数据类型(在本例中为INT)。此外,您尝试更改的列必须编入索引(它不必是主键,但通常是您想要的)。此外,每张表只能有一个AUTO_INCREMENT列。因此,您可能希望运行以下SQL(如果您的列未编入索引):

ALTER TABLE `document` MODIFY `document_id` INT AUTO_INCREMENT PRIMARY KEY;

您可以在MySQL文档中找到更多信息:http://dev.mysql.com/doc/refman/5.1/en/alter-table.html用于修改列语法,http://dev.mysql.com/doc/refman/5.1/en/create-table.html用于指定列的更多信息。


5
投票

AUTO_INCREMENT是列数据类型的一部分,您必须再次为该列定义完整的数据类型:

ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT

(以int为例,您应该将其设置为该列之前的类型)


5
投票

您必须在auto_increment指令之前指定列的类型,即ALTER TABLE document MODIFY COLUMN document_id INT AUTO_INCREMENT


3
投票

你可以这样做:

 alter table [table_name] modify column [column_name] [column_type] AUTO_INCREMENT;

2
投票

AUTO_INCREMENT是列数据类型的一部分,您必须再次为该列定义完整的数据类型:

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT

(以int为例,你应该把它设置为以前列所具有的类型)


2
投票

您可以使用以下查询使document_id自动递增

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

最好也制作document_id主键

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment PRIMARY KEY;
© www.soinside.com 2019 - 2024. All rights reserved.