Я пытаюсь обновить длину столбца varchar от 255 символов до 500 без потери содержимого. Раньше я удалял и воссоздавал таблицы, но я никогда не подвергался действию alter, который, как мне кажется, мне нужно использовать для этого. Я нашел документацию здесь: ALTER TABLE (Transfact-SQL), однако я не могу сделать головы или хвосты.
У меня есть следующее до сих пор (по существу ничего, к сожалению):
alter table [progennet_dev].PROGEN.LE
alter column UR_VALUE_3
Как мне подойти к этому? Есть ли более хорошая документация для этого утверждения там (я делал некоторые запросы для примера, но пришел пустой)?
Ответ 1
Вам нужно
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);
Затем столбец будет по умолчанию разрешать null, даже если он был первоначально определен как NOT NULL
. то есть опускание спецификации в ALTER TABLE ... ALTER COLUMN
всегда обрабатывается как.
ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NULL;
Это поведение отличается от поведения, используемого для новых столбцов, созданных с помощью ALTER TABLE
(или в CREATE TABLE
времени). Там значение nulloid по умолчанию зависит от настроек ANSI_NULL_DFLT
.
Ответ 2
Увеличение размера столбца с помощью ALTER
не потеряет никаких данных:
alter table [progennet_dev].PROGEN.LE
alter column UR_VALUE_3 varchar(500)
Как указывает @Martin, не забудьте явно указать NULL | NOT NULL
Ответ 3
ALTER TABLE table name
изменить COLUMN column name
varchar ("длина");
Ответ 4
Используя инструмент Maria-DB и DB-Navigator внутри IntelliJ, мне помогло MODIFY Column вместо Alter Column
Ответ 5
Я также сомневался, что у меня получилось
ALTER TABLE 'your_table' CHANGE 'property' 'property'
VARCHAR(whatever_you_want) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
Ответ 6
ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME VARCHAR(40);
Поздно к вопросу - но я использую Oracle SQL Developer, и @anonymous ответ был самым близким, но продолжал получать синтаксические ошибки, пока я не отредактировал запрос к этому.
Надеюсь, это поможет кому-то