Как добавить автоматическое приращение к существующему столбцу?


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

7 51

7 ответов:

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

ALTER TABLE t1 MODIFY b INTEGER NOT NULL AUTO_INCREMENT;

метод добавления AUTO_INCREMENT в таблицу С данными избегая при этом "повторяющиеся записи" ошибка:

  1. сделайте копию таблицы С данные с помощью вставки выберите:

    CREATE TABLE backupTable LIKE originalTable; 
    INSERT backupTable SELECT * FROM originalTable;
    
  2. удалить данные из originalTable (чтобы удалить дубликаты записей):

    TRUNCATE TABLE originalTable;
    
  3. чтобы добавить AUTO_INCREMENT и первичный Ключ

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

    INSERT originalTable (col1, col2, col3) 
    SELECT col1, col2,col3
    FROM backupTable;
    
  5. удалить backupTable:

    DROP TABLE backupTable;
    

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

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

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

Alter table table_name modify column_name datatype(length) AUTO_INCREMENT PRIMARY KEY

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

Это сработало для меня в случае, если вы хотите изменить AUTO_INCREMENT-атрибут для не пустой таблицы:

1.) Экспортировал всю таблицу как .sql file
2.) Удалил таблицу после экспорта
2.) Сделал необходимые изменения в CREATE_TABLE command
3.) Выполнил команды CREATE_TABLE и INSERT_INTO из списка .sql-file
...Эт Виола

просто добавьте ограничение auto_increment в столбец или измените столбец : -

 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;

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

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

это единственный способ, которым я мог бы сделать автоматическое увеличение столбца.

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

Alter table table_name modify table_name.column_name data_type AUTO_INCREMENT;

например:

Alter table avion modify avion.av int AUTO_INCREMENT;