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

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

From
"Dmitry E. Oboukhov"
Date:
имеется таблица с 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

Attachment

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

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


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

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


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

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

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


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


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


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.