Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Вы находитесь на странице архива. Актуальная документация доступна по ссылке.

ALTER TABLE ADD COLUMN

Содержание раздела
  1. Синтаксис
    1. Ключевое слово IF NOT EXISTS
    2. Ключевое слово LOGICAL_ONLY
  2. Ограничения
    1. Ограничения выполнения
    2. Ограничения имен
    3. Другие ограничения
  3. Примеры
    1. Добавление столбца без ключевых слов
    2. Добавление столбца с ключевым словом IF NOT EXISTS
    3. Добавление столбца с ключевым словом LOGICAL_ONLY

Поддерживается в версиях:  6.1 / 6.0.

Запрос добавляет столбец в логическую таблицу. Столбец добавляется после всех существующих столбцов таблицы.

Запрос поддерживается для СУБД ADB, ADP и ADQM.

Запрос попадает в очередь операций и обрабатывается в порядке его поступления в очередь. В ответе возвращается:

  • пустой объект ResultSet при успешном выполнении запроса;
  • исключение при неуспешном выполнении запроса.

При успешном выполнении запроса система обновляет структуру логической таблицы в сервисной базе данных, а структуру связанных физических таблиц — в хранилище данных.

После изменения структуры логической таблицы некоторые SELECT-запросы к логическим и материализованным представлениям, связанным с измененной таблицей, могут стать недоступными. В этом случае нужно пересоздать сбойные представления.

Ошибка выполнения корректного запроса блокирует исполнение последующих запросов в этой логической базе данных. В случае блокировки устраните причины сбоя и повторите сбойную операцию. Если повторение операции невозможно, удалите сбойную операцию запросом ERASE_CHANGE_OPERATION и вручную устраните несоответствия на физическом уровне (если такие есть).

Каждое изменение таблицы записывается в журнал. Журнал можно посмотреть с помощью запроса GET_CHANGES.

Синтаксис

ALTER TABLE [db_name.]table_name
ADD COLUMN [IF NOT EXISTS] column_name datatype
[LOGICAL_ONLY]

Параметры:

db_name

Имя логической базы данных, которой принадлежит изменяемая логическая таблица. Опционально, если выбрана логическая БД, используемая по умолчанию.

table_name

Имя изменяемой логической таблицы.

column_name

Имя добавляемого столбца таблицы.

datatype

Тип данных столбца column_name. Возможные значения см. в разделе Логические типы данных.

Ключевое слово IF NOT EXISTS

Ключевое слово IF NOT EXISTS включает проверку наличия столбца до попытки его добавления. Если ключевое слово указано в запросе, система возвращает успешный ответ как по успешно добавленному, так и уже существующему столбцу; иначе — только по успешно добавленному столбцу.

Ключевое слово LOGICAL_ONLY

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

Если ключевое слово не указано, столбец добавляется в логическую таблицу на логическом и физическом уровнях.

Ограничения

Ограничения выполнения

Ограничения имен

  • Имя столбца должно быть уникально в рамках логической таблицы и соответствовать требованиям, описанным в разделе Соглашения об именах.

Другие ограничения

  • Можно добавить только nullable-столбец.
  • После изменения таблицы запросы к связанным логическим и материализованным представлениям могут стать недоступными. В этом случае нужно пересоздать сбойные представления.
  • Информационная схема обновляется асинхронно, поэтому добавленный столбец может не сразу появиться в информационной схеме.

Примеры

Добавление столбца без ключевых слов

Добавление столбца в таблицу указанной логической БД:

ALTER TABLE marketing.stores
ADD COLUMN open_hours VARCHAR

Добавление столбца в таблицу логической БД, выбранной по умолчанию:

USE marketing_new;

ALTER TABLE sales
ADD COLUMN manager_id BIGINT;

Добавление столбца с ключевым словом IF NOT EXISTS

ALTER TABLE marketing.stores
ADD COLUMN IF NOT EXISTS open_hours VARCHAR

Добавление столбца с ключевым словом LOGICAL_ONLY

ALTER TABLE marketing.sales
ADD COLUMN manager_id BIGINT
LOGICAL_ONLY