DROP TABLE
Содержание раздела
Поддерживается в версиях: 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