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

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

是我做错了什么还是这不可能?

+--------------------+
| VERSION()          |
+--------------------+
| 5.0.75-0ubuntu10.2 |
+--------------------+

当前回答

以前的表格语法:

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

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

ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT auto_increment;

其他回答

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

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY

由于SQL标签附在这个问题上,我真的认为所有的答案都错过了一个主要的点。

MODIFY命令在SQL server中不存在,所以当你运行

修改COLUMN的主键

在这种情况下,您可以将新列添加为INT IDENTITY

ALTER TABLE Satellites
   ADD ID INT IDENTITY
       CONSTRAINT PK_YourTable PRIMARY KEY CLUSTERED;

OR


Fill the existing null index with incremental numbers using this method,
DECLARE @id INT
SET @id = 0 
UPDATE Satellites SET @id = SatelliteID = @id + 1 

执行此操作的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用于指定列的更多信息。

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

要修改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;