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;
Ответы
Ответ 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;