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

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

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

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

当前回答

如果以上都不行,试试这个。这就是我在MYSQL中所做的,是的,你需要写两次列名(document_id)。

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

其他回答

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

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

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT

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

要修改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 document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT;

下面的陈述是正确的。注意,您需要再次为列名提到数据类型(重新声明列名之前的数据类型)。

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT;