ALTER表 – 在MySQL中添加AUTOINCREMENT

我在MySQL中创build了一个表中的itemID列。 创build表后,现在我想将此列更改为AUTOINCREMENT 。 这怎么能用ALTER语句来完成呢?

表格定义:

ALLITEMS (itemid int(10) unsigned, itemname varchar(50))

我正在使用下面的代码,但它是抛出错误:语法不正确

 ALTER TABLE allitems MODIFY itemid INT(10) UNSIGNED AUTOINCREMENT; 
 CREATE TABLE ALLITEMS( itemid INT(10)UNSIGNED, itemname VARCHAR(50) ); ALTER TABLE ALLITEMS CHANGE itemid itemid INT(10)AUTO_INCREMENT PRIMARY KEY; DESC ALLITEMS; INSERT INTO ALLITEMS(itemname) VALUES ('Apple'), ('Orange'), ('Banana'); SELECT * FROM ALLITEMS; 

我之前也对CHANGEMODIFY关键字感到困惑:

 ALTER TABLE ALLITEMS CHANGE itemid itemid INT(10)AUTO_INCREMENT PRIMARY KEY; ALTER TABLE ALLITEMS MODIFY itemid INT(5); 

当我们在那里时,还要注意AUTO_INCREMENT也可以从一个预定义的数字开始:

 ALTER TABLE tbl AUTO_INCREMENT = 100; 

语法:

  ALTER TABLE `table1` CHANGE `itemId` `itemId` INT( 11 ) NOT NULL AUTO_INCREMENT 

但是表需要一个定义的键(在itemId上的主键)。

 ALTER TABLE `ALLITEMS` CHANGE COLUMN `itemid` `itemid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT; 
 ALTER TABLE allitems CHANGE itemid itemid INT(10) AUTO_INCREMENT; 
 ALTER TABLE tblcatalog CHANGE COLUMN id id INT(11) NOT NULL AUTO_INCREMENT FIRST; 

用于将AUTO_INCREMENT PRIMARY KEY添加到OP现有表的基本语法:

 ALTER TABLE allitems MODIFY itemid INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY; 

或者换一张新的表格,下面是文档中的语法示例:

 CREATE TABLE animals ( id MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(30) NOT NULL, PRIMARY KEY (id) ); 

陷阱和注意事项:

  • AUTO_INCREMENT列必须有一个索引。 (通常,你会希望它是PRIMARY KEY,但是MySQL不需要这个。)
  • AUTO_INCREMENT列设置为UNSIGNED通常是一个好主意。 从文档:

    如果可能,请使用UNSIGNED属性以允许更大的范围。

  • 使用CHANGEMODIFY子句创build列AUTO_INCREMENT (或实际上每当使用CHANGEMODIFY子句时),应该小心地包括列的所有修饰符,如NOT NULLUNSIGNED ,它们在表定义中显示你叫SHOW CREATE TABLE yourtable 。 否则这些修饰符将会丢失。
 ALTER TABLE t_name modify c_name INT(10) AUTO_INCREMENT PRIMARY KEY;