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

Способ уменьшения длины столбца в DB2

Есть ли способ уменьшить длину столбца в DB2?

Скажем, у меня есть таблица temp с столбцом col1, определяемая как VARCHAR(80). Я хочу уменьшить его до VARCHAR(60).

4b9b3361

Ответ 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)