Задача
Вы забыли включить столбец 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 |
+-----+----------+-----+