Обсуждение: [pgsql-ru-general] сделать ALTER TABLE varchar в TEXT

Поиск
Список
Период
Сортировка

[pgsql-ru-general] сделать ALTER TABLE varchar в TEXT

От
"Dmitry E. Oboukhov"
Дата:
имеется таблица с 62 млн записей у которой поле VARCHAR(32) NOT NULL

нужно сделать это поле TEXT'ом.


как бы это сделать чтобы не заблокировать БД на 2 часа?
--

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: unera@debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

Вложения

[pgsql-ru-general] Re: [pgsql-ru-general] сделать ALTER TABLE varchar в TEXT

От
Николай Кутрухин
Дата:
Приветствую.


> как бы это сделать чтобы не заблокировать БД на 2 часа?

Создать новый столбец, скопировать данные, удалить (переименовать) старый, переименовать новый.


Ответ на письмо от 23 марта 2017 г., 13:04:34:

> имеется таблица с 62 млн записей у которой поле VARCHAR(32) NOT NULL

> нужно сделать это поле TEXT'ом.


> как бы это сделать чтобы не заблокировать БД на 2 часа?


--
С уважением,
Николай                          
mailto:haar@list.ru

[pgsql-ru-general] Re: [pgsql-ru-general] сделать ALTER TABLE varchar в TEXT

От
Dmitry Igrishin
Дата:


23 марта 2017 г., 13:04 пользователь Dmitry E. Oboukhov <unera@debian.org> написал:
имеется таблица с 62 млн записей у которой поле VARCHAR(32) NOT NULL

нужно сделать это поле TEXT'ом.


как бы это сделать чтобы не заблокировать БД на 2 часа?
Если речь о PostgreSQL версии 9.1 и новее, то в данном конкретном случае конверсия VARCHAR(x) -> TEXT не приводит к перезаписи таблицы при ALTER TABLE ... SET DATA TYPE.