Способ уменьшения длины столбца в DB2 - PullRequest
15 голосов
/ 06 марта 2012

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

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

Ответы [ 3 ]

23 голосов
/ 06 марта 2012

В DB2 9.7 для Linux / UNIX / Windows вы можете использовать инструкцию ALTER TABLE, чтобы уменьшить длину столбца, при условии, что никакие значения в столбце не превышают новый размер столбца :

ALTER TABLE temp
    ALTER COLUMN col1 SET DATA TYPE VARCHAR(60);

Если какие-либо значения в столбце превышают желаемый размер, вы должны сначала обработать его.

В предыдущих версиях DB2 для Linux / UNIX / Windows вы не могли использовать этот метод для уменьшения размера столбца. Вам либо пришлось удалить / заново создать таблицу, либо пройти процесс добавления столбца, копирования данных и удаления старого столбца.

3 голосов
/ 30 августа 2013

Как дополнение к ответу Яна и Замечание Clockwork-Muse :

Хотя, как указал Ян, можно использовать операторы ALTER для уменьшения длины столбца в БД дляLUW, это не относится к DB2 for z / OS начиная с версии 10.

Согласно этой таблице поддерживаются только изменения типа данных с VARCHAR(n) на VARCHAR(n+x),который облом.

1 голос
/ 06 марта 2012

Вы не можете уменьшить длину столбца.Чтобы достичь этого эффекта, вы должны

  • создать новую таблицу с вашими данными и атрибутом, который вы хотите.
  • Удалить старую таблицу
  • Переименовать новую таблицу

Если вы хотите увеличить длину, это возможно с помощью команды ALTER

 ALTER TABLE temp
      ALTER COLUMN col1
      SET DATA TYPE VARCHAR(60)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...