我试图修改一个表,使其主键列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 | +--------------------+
当前回答
同时设置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>
其他回答
您可以使用以下查询使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;
AUTO_INCREMENT是列数据类型的一部分,你必须再次定义该列的完整数据类型:
ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT
(以int为例,您应该将其设置为列之前的类型)
试试下面的方法:
ALTER TABLE table_name MODIFY COLUMN id datatype auto_increment;
alter table tbl_user MODIFY COLUMN id int(10) auto_increment;
执行此操作的SQL将是:
ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;
SQL可能无法工作有几个原因。首先,必须重新指定数据类型(在本例中为INT)。此外,您试图更改的列必须被索引(它不一定是主键,但通常这是您想要的)。而且,每个表只能有一个AUTO_INCREMENT列。因此,您可能希望运行以下SQL(如果您的列没有索引):
ALTER TABLE `document` MODIFY `document_id` INT AUTO_INCREMENT PRIMARY KEY;
您可以在MySQL文档中找到更多信息:http://dev.mysql.com/doc/refman/5.1/en/alter-table.html用于修改列语法,http://dev.mysql.com/doc/refman/5.1/en/create-table.html用于指定列的更多信息。