Подтвердить что ты не робот

Увеличение размера персонажа различного типа в постгресах без потери данных

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

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

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

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

4b9b3361

Ответ 1

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

ALTER [COLUMN] column TYPE type [ ИСПОЛЬЗОВАНИЕ выражения]

И в качестве примечания, было бы проще просто создать таблицу, заполнить ее и протестировать:)

Ответ 2

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

ALTER TABLE client_details ALTER COLUMN name TYPE character varying(200);

Ответ 3

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

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

Ответ 4

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

Во время Столбец, чреватого размером varchar до более высоких значений, требуется таблица re write во время этой блокировки, которая будет храниться в таблице и пользовательской таблице, не имеющей доступа до таблица переписывание делается.

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

ALTER TABLE userdata ALTER COLUMN acc_no ТИП varchar (250);

Ответ 5

От PostgreSQL 9.2 Относительные примечания E.15.3.4.2

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

Ответ 6

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