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

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

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

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

当前回答

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

其他回答

使用以下查询:

ALTER TABLE YourTable DROP COLUMN IDCol

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

你必须在auto_increment指令之前指定列的类型,即ALTER TABLE document MODIFY column document_id INT auto_increment。

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

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY
ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

您可以使用以下查询使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;