Изменение максимальной длины столбца varchar? - PullRequest
164 голосов
/ 12 января 2012

Я пытаюсь обновить длину столбца varchar с 255 символов до 500 без потери содержимого. Я ранее отбрасывал и воссоздавал таблицы, но никогда не сталкивался с утверждением alter, которое, как мне кажется, мне нужно использовать для этого. Я нашел документацию здесь: ALTER TABLE (Transfact-SQL) однако я не могу сделать из этого ни головы, ни хвоста.

Пока у меня есть следующее (по сути, ничего, к сожалению):

alter table [progennet_dev].PROGEN.LE
alter column UR_VALUE_3

Как мне подойти к этому? Есть ли лучшая документация для этого оператора (я провел несколько поисков примера оператора, но оказался пустым)?

Ответы [ 5 ]

317 голосов
/ 12 января 2012

Вам нужно

ALTER TABLE YourTable ALTER COLUMN YourColumn <<new_datatype>> [NULL | NOT NULL]

Но не забудьте указать NOT NULL явно при желании.

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NOT NULL;

Если вы оставите его неопределенным, как показано ниже ...

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500);

Тогда столбец по умолчанию будет разрешать пустые значения, даже если он изначально был определен как NOT NULL.то есть пропуск спецификации в ALTER TABLE ... ALTER COLUMN всегда обрабатывается как.

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NULL;

Это поведение отличается от того, которое используется для новых столбцов, созданных с ALTER TABLE (или во время CREATE TABLE).Там обнуляемость по умолчанию зависит от настроек ANSI_NULL_DFLT.

23 голосов
/ 12 января 2012

Увеличение размера столбца с помощью ALTER не приведет к потере данных:

alter table [progennet_dev].PROGEN.LE 
    alter column UR_VALUE_3 varchar(500) 

Как указывает @Martin, не забудьте явно указать NULL | NOT NULL

5 голосов
/ 28 марта 2018

ALTER TABLE table name изменить COLUMN column name varchar ("длина");

0 голосов
/ 21 ноября 2018

У меня также были сомнения, что у меня сработало:

ALTER TABLE `your_table` CHANGE `property` `property` 
VARCHAR(whatever_you_want) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;  
0 голосов
/ 04 сентября 2018

Используя Maria-DB и DB-Navigator внутри IntelliJ, MODIFY Column работал для меня вместо Alter Column

...