[an error occurred while processing this directive]

Автозаполнение столбцов для автоинкремента в MySQL
Задача:
В существующую таблицу добавить столбец, автоматически заполнить его от 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)
 
02.08.2012 , Автор: Lennotoecom
Ключи: mysql, table, auto_increment / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / SQL и базы данных / MySQL специфика / Оптимизация и администрирование MySQL

[an error occurred while processing this directive]

[an error occurred while processing this directive]