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;
我之前也对CHANGE
和MODIFY
关键字感到困惑:
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属性以允许更大的范围。
- 使用
CHANGE
或MODIFY
子句创build列AUTO_INCREMENT
(或实际上每当使用CHANGE
或MODIFY
子句时),应该小心地包括列的所有修饰符,如NOT NULL
或UNSIGNED
,它们在表定义中显示你叫SHOW CREATE TABLE yourtable
。 否则这些修饰符将会丢失。
ALTER TABLE t_name modify c_name INT(10) AUTO_INCREMENT PRIMARY KEY;