我在MySQL中使用列itemID
创建了一个表。创建表后,现在我想将此列更改为AUTOINCREMENT
。如何使用ALTER语句完成此操作?
表格定义:
ALLITEMS (itemid int(10) unsigned, itemname varchar(50))
我正在使用以下代码,但它正在抛出错误:语法错误。
ALTER TABLE allitems
MODIFY itemid INT(10) UNSIGNED AUTOINCREMENT;
答案 0 :(得分:90)
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;
答案 1 :(得分:15)
语法:
ALTER TABLE `table1` CHANGE `itemId` `itemId` INT( 11 ) NOT NULL AUTO_INCREMENT
但是表需要一个定义的键(在itemId上是ex主键)。
答案 2 :(得分:12)
ALTER TABLE `ALLITEMS`
CHANGE COLUMN `itemid` `itemid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
答案 3 :(得分:6)
将AUTO_INCREMENT PRIMARY KEY添加到OP现有表格的基本语法:
ALTER TABLE allitems
MODIFY itemid INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY;
或者对于新表,这里是the docs的语法示例:
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
子句创建列AUTO_INCREMENT
(或 时使用CHANGE
或{{1您应该小心包括列的所有修饰符,例如MODIFY
或NOT NULL
,当您调用UNSIGNED
时,它们会显示在表定义中。否则这些修饰符将丢失。答案 4 :(得分:2)
ALTER TABLE allitems
CHANGE itemid itemid INT(10) AUTO_INCREMENT;
答案 5 :(得分:1)
ALTER TABLE tblcatalog
CHANGE COLUMN id id INT(11) NOT NULL AUTO_INCREMENT FIRST;
答案 6 :(得分:-1)
ALTER TABLE t_name modify c_name INT(10) AUTO_INCREMENT PRIMARY KEY;