Задача:
В существующую таблицу добавить столбец, автоматически заполнить его от 1 до количества строк в таблице, сделать его ключевым с автоинкрементом.Решение:
Исходная таблица
mysql> select * from tTable;
+------+
| b |
+------+
| aa |
| ab |
| ac |
| ad |
| ae |
| af |
| ag |
| ah |
+------+
8 rows in set (0.00 sec)
Добавляем столбец командой:
mysql> alter table tTable add a int;
теперь таблица имеет вид
mysql> select * from tTable;
+------+------+
| b | a |
+------+------+
| aa | NULL |
| ab | NULL |
| ac | NULL |
| ad | NULL |
| ae | NULL |
| af | NULL |
| ag | NULL |
| ah | NULL |
+------+------+
8 rows in set (0.00 sec)
Собственно само автозаполнение:
mysql> set @x:=0; update tTable set a=(@x:=@x+1);
После чего таблица будет иметь вид
mysql> select * from tTable;
+------+------+
| b | a |
+------+------+
| aa | 1 |
| ab | 2 |
| ac | 3 |
| ad | 4 |
| ae | 5 |
| af | 6 |
| ag | 7 |
| ah | 8 |
+------+------+
Делаем столбец ключом и автоинкрементом:
mysql> alter table tTable change a a int key auto_increment;
вид таблицы после изменения
mysql> show columns from tTable;
+-------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| b | char(2) | YES | | NULL | |
| a | int(11) | | PRI | NULL | auto_increment |
+-------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
URL:
Обсуждается: http://www.opennet.dev/tips/info/2707.shtml