Как добавить AUTO_INCREMENT в существующий столбец? - PullRequest
62 голосов
/ 18 февраля 2011

Как добавить auto_increment в существующий столбец таблицы MySQL?

Ответы [ 8 ]

89 голосов
/ 18 февраля 2011

Я думаю, что вы хотите MODIFY столбец, как описано для команды ALTER TABLE . Это может быть что-то вроде этого:

ALTER TABLE users MODIFY id INTEGER NOT NULL AUTO_INCREMENT;

Перед запуском выше убедитесь, что столбец id имеет первичный индекс.

14 голосов
/ 25 августа 2015

Метод добавления AUTO_INCREMENT в таблицу с данными при исключении ошибки « Duplicate entry »:

  1. Сделать копию таблицы с данными с использованием INSERT SELECT:

    CREATE TABLE backupTable LIKE originalTable; 
    INSERT backupTable SELECT * FROM originalTable;
    
  2. Удалить данные из оригинальной таблицы (для удаления дублирующихся записей):

    TRUNCATE TABLE originalTable;
    
  3. Чтобы добавить AUTO_INCREMENT и ПЕРВИЧНЫЙ КЛЮЧ

    ALTER TABLE originalTable ADD id INT PRIMARY KEY AUTO_INCREMENT;
    
  4. Скопировать данные обратно в originalTable (сделать не , включая только что созданный столбец(id), поскольку он будет заполнен автоматически)

    INSERT originalTable (col1, col2, col3) 
    SELECT col1, col2,col3
    FROM backupTable;
    
  5. Удалить резервную копию таблицы:

    DROP TABLE backupTable;
    

Надеюсь, это полезно!

Подробнее о дублировании таблиц с помощью CREATE LIKE:

Дублирование таблицы MySQL, индексов и данных

9 голосов
/ 27 января 2014
Alter table table_name modify column_name datatype(length) AUTO_INCREMENT PRIMARY KEY

Вы должны добавить первичный ключ к автоинкременту, иначе вы получите ошибку в mysql.

4 голосов
/ 03 августа 2015

Просто добавьте auto_increment Constraint In в колонку или MODIFY COLUMN: -

 ALTER TABLE `emp` MODIFY COLUMN `id` INT NOT NULL UNIQUE AUTO_INCREMENT FIRST;

Или сначала добавьте столбец, а затем измените столбец на -

1. Alter TABLE `emp` ADD COLUMN `id`;

2. ALTER TABLE `emp` CHANGE COLUMN `id` `Emp_id` INT NOT NULL UNIQUE AUTO_INCREMENT FIRST;
3 голосов
/ 06 января 2015

Это сработало для меня, если вы хотите изменить атрибут AUTO_INCREMENT для непустой таблицы:1.) Экспортировал всю таблицу как файл .sql2.) Удалил таблицу после экспорта2.) Внесены ли необходимые изменения в команду CREATE_TABLE?3.) Выполнены команды CREATE_TABLE и INSERT_INTO из .sql-файла... и альт

0 голосов
/ 08 января 2019
ALTER TABLE Table name ADD column datatype AUTO_INCREMENT,ADD primary key(column);
0 голосов
/ 17 апреля 2018

Alter table table_name modify table_name.column_name data_type AUTO_INCREMENT;

Например:

Alter table avion modify avion.av int AUTO_INCREMENT;

0 голосов
/ 02 февраля 2018

Мне удалось сделать это с помощью следующего кода:

ALTER TABLE `table_name`
CHANGE COLUMN `colum_name` `colum_name` INT(11) NOT NULL AUTO_INCREMENT FIRST;

Это единственный способ сделать автоинкремент столбца.

INT (11) показывает, что максимальная длина int равна 11, вы можете пропустить ее, если хотите.

...