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).
базовый синтаксис для добавления первичного ключа 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
. В противном случае эти модификаторы будут потеряны.