ALTER table-добавление автоинкремента в MySQL

Я создал таблицу в MySQL с on column itemID. После создания таблицы, теперь я хочу изменить этот столбец AUTOINCREMENT. Как это можно сделать с помощью операторов ALTER?

таблицы определения:

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

Я использую следующий код, но он бросает ошибка: неправильный синтаксис.

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

7 ответов


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;

базовый синтаксис для добавления первичного ключа AUTO_INCREMENT в существующую таблицу 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)
);

ловушки и вещи, чтобы отметить:

  • An AUTO_INCREMENT столбец должен иметь индекс. (Обычно вы хотите, чтобы это был первичный ключ, но MySQL этого не требует.)
  • это обычно хорошая идея, чтобы сделать ваш AUTO_INCREMENT колонки UNSIGNED. Из документов:

    используйте атрибут UNSIGNED, если это возможно, чтобы разрешить больший диапазон.

  • при использовании CHANGE или MODIFY предложение для создания столбца AUTO_INCREMENT (или даже , когда использовать CHANGE или MODIFY предложение) вы должны быть осторожны, чтобы включить все модификаторы для столбца, например NOT NULL или UNSIGNED, которые отображаются в определении таблицы при вызове SHOW CREATE TABLE yourtable. В противном случае эти модификаторы будут потеряны.

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

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

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