3.6 KiB
sidebar_position | sidebar_label |
---|---|
43 | DETACH |
DETACH
Заставляет сервер "забыть" о существовании таблицы, материализованного представления или словаря.
Синтаксис
DETACH TABLE|VIEW|DICTIONARY [IF EXISTS] [db.]name [ON CLUSTER cluster] [PERMANENTLY]
Такой запрос не удаляет ни данные, ни метаданные таблицы, материализованного представления или словаря. Если отключение не было перманентным (запрос без ключевого слова PERMANENTLY
), то при следующем запуске сервер прочитает метаданные и снова узнает о таблице/представлении/словаре. Если сущность была отключена перманентно, то сервер не подключит их обратно автоматически.
Независимо от того, каким способом таблица была отключена, ее можно подключить обратно с помощью запроса ATTACH. Системные log таблицы также могут быть подключены обратно (к примеру, query_log
, text_log
и др.). Другие системные таблицы не могут быть подключены обратно, но на следующем запуске сервер снова "вспомнит" об этих таблицах.
ATTACH MATERIALIZED VIEW
не может быть использован с кратким синтаксисом (без SELECT
), но можно подключить представление с помощью запроса ATTACH TABLE
.
Обратите внимание, что нельзя перманентно отключить таблицу, которая уже временно отключена. Для этого ее сначала надо подключить обратно, а затем снова отключить перманентно.
Также нельзя использовать DROP с отключенной таблицей или создавать таблицу с помощью CREATE TABLE с таким же именем, как у отключенной таблицы. Еще нельзя заменить отключенную таблицу другой с помощью запроса RENAME TABLE.
Пример
Создание таблицы:
Запрос:
CREATE TABLE test ENGINE = Log AS SELECT * FROM numbers(10);
SELECT * FROM test;
Результат:
┌─number─┐
│ 0 │
│ 1 │
│ 2 │
│ 3 │
│ 4 │
│ 5 │
│ 6 │
│ 7 │
│ 8 │
│ 9 │
└────────┘
Отключение таблицы:
Запрос:
DETACH TABLE test;
SELECT * FROM test;
Результат:
Received exception from server (version 21.4.1):
Code: 60. DB::Exception: Received from localhost:9000. DB::Exception: Table default.test doesn't exist.
Смотрите также