Увеличение размера символов различного типа в postgres без потери данных - PullRequest
43 голосов
/ 30 марта 2011

Мне нужно увеличить размер символьного поля (60) в таблице базы данных postgres без потери данных.

У меня есть эта команда

alter table client_details alter column name set character varying(200);

увеличит ли эта команда размер поля с 60 до 200 без потери данных?

Ответы [ 6 ]

77 голосов
/ 09 июля 2012

Правильный запрос для изменения предела типа данных для конкретного столбца:

ALTER TABLE client_details ALTER COLUMN name TYPE character varying(200);
33 голосов
/ 30 марта 2011

Ссылаясь на эту документацию, потери данных не будет, alter column только преобразует старые данные в новые, так что преобразование между символьными данными должно быть в порядке.Но я не думаю, что ваш синтаксис правильный, смотрите документацию, которую я упоминал ранее.Я думаю, вы должны использовать этот синтаксис:

ALTER [COLUMN] тип столбца [ИСПОЛЬЗОВАНИЕ выражения]

И, как примечание, не будет ли легчепросто создайте таблицу, заполните ее и протестируйте:)

6 голосов
/ 30 марта 2011

Да. Но он перезапишет эту таблицу и заблокирует ее исключительно на время перезаписи & mdash; любой запрос, пытающийся получить доступ к этой таблице, будет ожидать окончания перезаписи.

Рассмотрите возможность изменения типа текста и использования проверочного ограничения для ограничения размера & mdash; изменение ограничения не приведет к перезаписи или блокировке таблицы.

1 голос
/ 18 июля 2016

Изменение размера столбца в Postgresql 9.1 версии

Во время преобразования столбца в размер varchar в более высокие значения требуется перезапись таблицы, когда эта блокировка будет удерживаться для таблицы, а пользовательская таблица не сможет получить доступ пока не будет переписана таблица.

Имя таблицы: - userdata Название столбца: - acc_no

ALTER TABLE userdata ALTER COLUMN acc_no TYPE varchar (250);

0 голосов
/ 12 июля 2016

Вы можете использовать это ниже команды sql
ALTER TABLE client_details ALTER COLUMN name TYPE varchar(200)

0 голосов
/ 18 ноября 2015

С PostgreSQL 9.2 Relase Notes E.15.3.4.2

Увеличение предела длины для столбцов varchar или varbit или полное удаление ограничения больше не требует перезаписи таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...