The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Автозаполнение столбцов для автоинк..."
Отправлено auto_tips, 04-Авг-12 15:32 
Задача:
В существующую таблицу добавить столбец, автоматически заполнить его от 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.ru/tips/info/2707.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру