DROP TABLE

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

Поддерживается в версиях:  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.

Запрос позволяет удалить указанную таблицу — логическую таблицу или прокси-таблицу — вместе с ее данными.

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

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

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

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

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

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

Tslog остается без изменений при пересоздании логической таблицы с ключевым словом LOGIСAL_ONLY и удаляется — при пересоздании таблицы без LOGIСAL_ONLY. Под пересозданием таблицы понимается последовательное удаление и создание таблицы с тем же именем.

Синтаксис

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

Параметры:

db_name

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

table_name

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

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

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

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

Ключевое слово DATASOURCE_TYPE задает имя датасорса, из которого удаляются данные таблицы. Значение (datasource_alias) указывается в одинарных кавычках (например, 'adg'); также доступны, но могут быть удалены в будущем следующие варианты: значение без кавычек (например, adg) или в двойных кавычках (например, "adg").

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

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

Ключевое слово 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