ALTER表-在MySQL中添加AUTOINCREMENT

ippsafx7  于 12个月前  发布在  Mysql
关注(0)|答案(9)|浏览(108)

我在MySQL中创建了一个列为itemID的表。
创建表之后,现在我想将此列更改为AUTOINCREMENT

如何使用ALTER语句

表格定义:
ALLITEMS (itemid int(10) unsigned, itemname varchar(50))
我使用下面的代码,但它抛出一个语法错误

错误:语法错误

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

7vux5j2d1#

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;
x4shl7ld

x4shl7ld2#

语法:

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

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

zphenhs4

zphenhs43#

ALTER TABLE `ALLITEMS`
    CHANGE COLUMN `itemid` `itemid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT;
afdcj2ne

afdcj2ne4#

将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列必须有索引。(通常,你会希望它是主键,但MySQL不要求这样。
  • 通常最好将AUTO_INCREMENT列设置为UNSIGNED。从文档:

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

  • 当使用CHANGEMODIFY子句来创建列AUTO_INCREMENT时(或者实际上 * 无论何时 * 使用CHANGEMODIFY子句),您应该小心地包含该列的所有修饰符,如NOT NULLUNSIGNED,这些修饰符在您调用SHOW CREATE TABLE yourtable时显示在表定义中。否则这些修饰符将丢失。
inb24sb2

inb24sb25#

ALTER TABLE allitems
CHANGE itemid itemid INT(10) AUTO_INCREMENT;
bakd9h0s

bakd9h0s6#

ALTER TABLE tblcatalog
    CHANGE COLUMN id id INT(11) NOT NULL AUTO_INCREMENT FIRST;
jw5wzhpr

jw5wzhpr7#

ALTER TABLE employees CHANGE id id int AUTO_INCREMENT PRIMARY KEY;

zfciruhq

zfciruhq8#

要重置自动增量的值,请执行以下操作:

ALTER TABLE [table_name] AUTO_INCREMENT = start_value;
ojsjcaue

ojsjcaue9#

ALTER TABLE t_name modify c_name INT(10) AUTO_INCREMENT PRIMARY KEY;

相关问题