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

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

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

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

当前回答

试试下面的方法:

ALTER TABLE table_name MODIFY COLUMN id datatype auto_increment;

其他回答

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

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT;
ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

使用以下查询:

ALTER TABLE YourTable DROP COLUMN IDCol

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

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

ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT

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

您可以通过以下查询将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;