ALTER TABLE DROP COLUMN

Содержание раздела
  1. Как работает запрос
    1. Регистрация запроса
    2. Обработка запроса
    3. Успешный результат
    4. Неуспешный результат
  2. Синтаксис
    1. Ключевое слово IF EXISTS
    2. Ключевое слово LOGICAL_ONLY
  3. Варианты ответа
  4. Ограничения
    1. Ограничения выполнения
    2. Ограничения партиционирования
    3. Другие ограничения
  5. Примеры
    1. Удаление столбца без ключевых слов
    2. Удаление столбца с ключевым словом IF 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
DROP COLUMN [IF EXISTS] column_name
[LOGICAL_ONLY]

Параметры:

db_name

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

table_name

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

column_name

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

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

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

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

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

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

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

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

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

Ограничения

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

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

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

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

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

Примеры

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

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

ALTER TABLE marketing.clients
DROP COLUMN additional

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

ALTER TABLE marketing.payments_proxy
DROP COLUMN manager

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

USE marketing;

ALTER TABLE sales_snapshot
DROP COLUMN store_address;

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

ALTER TABLE marketing.clients
DROP COLUMN IF EXISTS additional

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

ALTER TABLE marketing_new.sales
DROP COLUMN client_info
LOGICAL_ONLY