Подтвердить что ты не робот

ALTER table - добавление AUTOINCREMENT в MySQL

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

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

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

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

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

Ответ 1

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;

Ответ 2

Синтаксис:

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

Но таблице нужен определенный ключ (ex primary key on itemId).

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

Основной синтаксис добавления PRIMARY KEY для 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)
);

Ловушки и примечания:

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

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

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

Ответ 7

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