Изменение столбцов в таблице

Изменение столбцов в таблице

Существующие столбцы в таблице могут быть изменены в нескольких отношениях, а именно:

* имя столбца может быть изменено на другое имя, не используемое в таблице;

* столбец может быть "перенесен" на другую позицию в системе упорядочивания столбцов слева направо;

* возможно преобразование несимвольных данных в символьные с некоторыми ограничениями.

Синтаксис

Используйте следующий синтаксис для ALTER TABLE:

ALTER TABLE таблица

ALTER [COLUMN] имя-простого-столбца изменение;

изменение = новое-имя-столбца | новый-тип-столбца | новая-позиция-столбца

новое-имя-столбца = ТО имя-простого-столбца

новый-тип-столбца = TYPE тип-данных-или-домен

новая-позиция-столбца = POSITION целое

! ! !

ПРИМЕЧАНИЕ. Если вы пытаетесь переименовать столбец, вы можете неожиданно получить проблемы зависимостей, если на столбец существуют ссылки из ограничений или он используется в просмотрах, триггерах или хранимых процедурах.

. ! .

Примеры

Здесь мы изменяем имя столбца с EMP_NO на EMP_NUM:

ALTER TABLE EMPLOYEE

ALTER COLUMN EMP_NO TO EMP_NUM;

/* ключевое слово COLUMN необязательно */

Теперь изменяется позиция столбца:

ALTER TABLE EMPLOYEE

ALTER COLUMN EMP_NUM POSITION 4;

В этот раз тип данных EMP_NUM заменяется с INTEGER на VARCHAR (20):

ALTER TABLE EMPLOYEE

ALTER COLUMN EMP_NUM TYPE VARCHAR(20) ;

Ограничения при изменении типа данных

Firebird не позволит вам изменить тип данных столбца или домена, в результате чего могут потеряться данные.

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

* Когда числовые типы преобразуются в строковый тип, каждый числовой тип рассматривается как предмет с минимальной длиной в байтах в соответствии с типом (см. рис. 8.1).

* Преобразование символьных данных в несимвольные недопустимо.

* Столбцы массивов и BLOB не могут быть преобразованы.

! ! !

ВНИМАНИЕ! Любые изменения определения полей могут потребовать пересоздания индексов.

. ! .