Добавление последовательности в существующую таблицу

Задача
Вы забыли включить столбец AUTO_INCREMENT в таблицу при создании. Теперь уже поздно?

Решение
Нет, просто добавьте его с помощью предложения ALTER TABLE. MySQL автоматически создаст столбец и пронумерует строки.

Обсуждение
Чтобы добавить последовательность в таблицу, где ее раньше не было, выполните предложение ALTER TABLE для создания столбца AUTO_INCREMENT. Предположим, что у вас есть таблица t, включающая столбцы name и age и не содержащая столбца последовательности:

+----------+------+
| name | age |
+----------+------+
| boris | 47 |
| clarence | 62 |
| abner | 53 |
+----------+------+

Вы можете добавить в таблицу столбец последовательности id следующим образом:

mysql> ALTER TABLE t
-> ADD id INT NOT NULL AUTO_INCREMENT,
-> ADD PRIMARY KEY (id);
mysql> SELECT * FROM t ORDER BY id;

+----------+------+--+
| name | age | id |
+----------+------+--+
| boris | 47 | 1 |
| clarence | 62 | 2 |
| abner | 53 | 3 |
+----------+-----+--+

MySQL автоматически пронумерует строки, вам не нужно присваивать значения самостоятельно – очень удобно.

По умолчанию ALTER TABLE добавляет новые столбцы в конец таблицы.


Чтобы поместить столбец в какое-то определенное место, используйте ключевое слово FIRST или AFTER в конце инструкции ADD. Следующие предложения ALTER TABLE аналогичны приведенному выше, но помещают столбец id первым в таблице или после столбца name соответственно:

ALTER TABLE t
ADD id INT NOT NULL AUTO_INCREMENT FIRST,
ADD PRIMARY KEY (id);
ALTER TABLE t
ADD id INT NOT NULL AUTO_INCREMENT AFTER name,
ADD PRIMARY KEY (id);

В таблицах MyISAM можно указать начальное значение для нового столбца последовательности, добавив инструкцию AUTO_INCREMENT = n в предложение ALTER TABLE:

mysql> ALTER TABLE t
-> ADD id INT NOT NULL AUTO_INCREMENT FIRST,
-> ADD PRIMARY KEY (id),
-> AUTO_INCREMENT = 100;
mysql> SELECT * FROM t ORDER BY id;

+-----+----------+-----+
| id | name | age |
+-----+----------+-----+
| 100 | boris | 47 |
| 101 | clarence | 62 |
| 102 | abner | 53 |
+-----+----------+-----+

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела MySQL на эту тему:
Генераторы однострочных последовательностей
Генерирование значений последовательности
Извлечение значений последовательности
Использование значений AUTO_INCREMENT для связывания таблиц
Как начать последовательность с определенного значения