ALTER表 - 在MySQL中添加AUTO_INCREMENT

时间:2011-08-05 13:49:54

标签: mysql sql alter-table

我在MySQL中使用列itemID创建了一个表。创建表后,现在我想将此列更改为AUTOINCREMENT。如何使用ALTER语句完成此操作?

表格定义:

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

我正在使用以下代码,但它正在抛出错误:语法错误

ALTER TABLE allitems
MODIFY itemid INT(10) UNSIGNED AUTOINCREMENT; 

7 个答案:

答案 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;

我之前也对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;

答案 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_INCREMENTUNSIGNED通常是个好主意。来自文档:
      

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

  • 使用CHANGEMODIFY子句创建列AUTO_INCREMENT(或 时使用CHANGE或{{1您应该小心包括列的所有修饰符,例如MODIFYNOT 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;