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

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

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

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

当前回答

同时设置column为主键和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>

其他回答

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

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

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

同时设置column为主键和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>

您可以通过以下查询将atuto_increment约束应用到数据列:

ALTER TABLE customers MODIFY COLUMN customer_id BIGINT NOT NULL AUTO_INCREMENT;

但是,如果列是外键约束的一部分,很可能会收到一个错误。因此,建议使用以下查询来关闭foreign_key_checks:

SET foreign_key_checks = 0;

因此,请使用以下查询:

SET foreign_key_checks = 0;
ALTER TABLE customers MODIFY COLUMN customer_id BIGINT NOT NULL AUTO_INCREMENT;
SET foreign_key_checks = 1;

你可以这样做:

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