ALTER TABLE ADD COLUMN

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

Поддерживается в версиях: 7.6 / 7.5 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.12 / 6.11 / 6.10 / 6.9 / 6.8 / 6.7 / 6.6 / 6.5 / 6.4 / 6.3 / 6.2 / 6.1 / 6.0.

Запрос добавляет новый столбец в таблицу:

Новый столбец добавляется после всех существующих столбцов таблицы (включая системные столбцы).

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

Как работает запрос

Регистрация запроса

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

Обработка запроса

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

Успешный результат

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

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

Неуспешный результат

При ошибке исполнения корректного запроса система блокирует все последующие DDL-запросы в логической БД. О снятии такой блокировки см. в разделе Снятие блокировки DDL-запросов.

Синтаксис

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

Параметры:

db_name

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

table_name

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

column_name

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

data_type

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

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

Включает проверку наличия сущности с таким именем до попытки добавления столбца. Если ключевое слово указано в запросе, успешный ответ возвращается при наличии или успешном добавлении столбца, иначе — только при успешном добавлении столбца.

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

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

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

Варианты ответа

В ответе возвращается:

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

Ограничения

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

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

Ограничения партиционирования

  • При добавлении столбца в партиционированную таблицу необходимо добавить соответствующий столбец во все ее партиции.
  • При добавлении столбца в партицию необходимо добавить соответствующий столбец в связанную партиционированную таблицу и другие ее партиции.

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

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

Примеры

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

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

ALTER TABLE marketing.clients
ADD COLUMN description VARCHAR;

ALTER TABLE marketing.stores
ADD COLUMN previous_month_sales BIGINT;

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

ALTER TABLE marketing.payments_proxy
ADD COLUMN manager_id BIGINT

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

USE marketing;

ALTER TABLE sales_snapshot
ADD COLUMN store_address VARCHAR(256);

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

ALTER TABLE marketing.clients
ADD COLUMN IF NOT EXISTS description VARCHAR

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

ALTER TABLE marketing_new.sales
ADD COLUMN client_id BIGINT
LOGICAL_ONLY