我试图修改一个表,使其主键列AUTO_INCREMENT后的事实。我已经尝试了下面的SQL,但得到了一个语法错误通知。
ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT
是我做错了什么还是这不可能?
+--------------------+ | VERSION() | +--------------------+ | 5.0.75-0ubuntu10.2 | +--------------------+
我试图修改一个表,使其主键列AUTO_INCREMENT后的事实。我已经尝试了下面的SQL,但得到了一个语法错误通知。
ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT
是我做错了什么还是这不可能?
+--------------------+ | VERSION() | +--------------------+ | 5.0.75-0ubuntu10.2 | +--------------------+
当前回答
Roman是对的,但请注意auto_increment列必须是PRIMARY KEY或UNIQUE KEY的一部分(并且在几乎100%的情况下,它应该是组成PRIMARY KEY的唯一列):
ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY
其他回答
当您再次重新定义列时,您必须再次指定数据类型并将auto_increment添加到它,因为它是数据类型的一部分。
ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;
在我的例子中,它只在我输入非空时起作用。我认为这是一个限制。
ALTER TABLE document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT;
以前的表格语法:
CREATE TABLE apim_log_request (TransactionId varchar(50) DEFAULT NULL);
要将TransactionId更改为自动递增,请使用此查询
ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT 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>
AUTO_INCREMENT是列数据类型的一部分,你必须再次定义该列的完整数据类型:
ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT
(以int为例,您应该将其设置为列之前的类型)