DROP TABLE

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

Поддерживается в версиях: 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 / 5.8 / 5.7 / 5.6 / 5.5 / 5.4 / 5.3 / 5.2 / 5.1 / 5.0.

Запрос удаляет указанную таблицу из логической БД, а ее данные — из датасорсов хранилища.

Используйте запрос, чтобы удалить:

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

Пересоздать таблицу только на логическом уровне, без удаления ее данных из хранилища, можно с помощью сочетания DROP TABLE ... LOGICAL_ONLY и CREATE TABLE … LOGICAL_ONLY.

Целевые датасорсы

Данные таблицы удаляются:

При удалении данных таблицы из последнего датасорса система также удаляет таблицу из логической схемы данных.

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

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

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

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

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

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

При успешном выполнении запроса система удаляет:

Запрос с LOGIСAL_ONLY не удаляет физические таблицы, но в остальном выполняется также.

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

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

Синтаксис

DROP TABLE [IF EXISTS] [db_name.]table_name
[DATASOURCE_TYPE = 'datasource_name']
[LOGICAL_ONLY]

Параметры:

db_name

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

table_name

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

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

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

Ключевое слово DATASOURCE_TYPE = 'datasource_name'

Задает имя датасорса, из которого удаляются данные таблицы. Имя должно соответствовать конфигурации.

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

Удаление партиционированной таблицы из всех или последнего датасорса недоступно, если у нее есть партиции.

При удалении данных таблицы из последнего датасорса система также удаляет саму таблицу из логической схемы данных.

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

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

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

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

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

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

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

Ограничения

Примеры

Удаление таблицы с удалением данных из всех датасорсов

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

DROP TABLE marketing.sales

Удаление прокси-таблицы:

DROP TABLE marketing.payments_proxy

Удаление таблицы и ее данных с проверкой наличия таблицы

DROP TABLE IF EXISTS marketing.sales_unknown_existence

Удаление таблицы и ее данных из двух датасорсов

-- удаление таблицы из датасорса adb
DROP TABLE marketing.stores DATASOURCE_TYPE = 'adb';

-- удаление таблицы из датасорса adg
DROP TABLE marketing.stores DATASOURCE_TYPE = 'adg';

Удаление таблицы только на логическом уровне

DROP TABLE marketing.sales1 LOGICAL_ONLY