Способ уменьшения длины столбца в DB2
Есть ли способ уменьшить длину столбца в DB2?
Скажем, у меня есть таблица temp с столбцом col1
, определяемая как VARCHAR(80)
. Я хочу уменьшить его до VARCHAR(60)
.
Ответы
Ответ 1
В DB2 9.7 для Linux/UNIX/Windows вы можете использовать оператор ALTER TABLE для уменьшения длины столбца, считая, что никакие значения в столбце не превышают новый размер столбца:
ALTER TABLE temp
ALTER COLUMN col1 SET DATA TYPE VARCHAR(60);
Если любые значения в столбце превышают желаемый размер, вы должны сначала обработать его.
В предыдущих версиях DB2 для Linux/UNIX/Windows вы не могли использовать этот метод для уменьшения размера столбца. Вам либо пришлось отбросить/воссоздать таблицу, либо пройти процесс добавления столбца, копирования данных и удаления старого столбца.
Ответ 2
В качестве дополнения к ответу Ian и Clockwork-Muse примечание:
Хотя, как отметил Ян, возможно, использовать инструкции ALTER
для уменьшения длины столбца в DB для LUW, это не относится к DB2 для z/OS начиная с версии 10.
В соответствии с эта таблица поддерживаются только типы данных от VARCHAR(n)
до VARCHAR(n+x)
, что является обломком.
Ответ 3
Вы не можете уменьшить длину столбца. Чтобы добиться этого, вы должны
- создайте новую таблицу с вашими данными и с атрибутом, который вы хотите.
- Удалить старую таблицу
- Переименовать новую таблицу
Если вы хотите увеличить длину, это возможно с помощью команды ALTER
ALTER TABLE temp
ALTER COLUMN col1
SET DATA TYPE VARCHAR(60)