Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

DETACH

Позволяет серверу "забыть" о существовании таблицы, materialized view, словаря или базы данных.

Синтаксис

DETACH TABLE|VIEW|DICTIONARY|DATABASE [IF EXISTS] [db.]name [ON CLUSTER cluster] [PERMANENTLY] [SYNC]

Отсоединение не удаляет данные или метаданные таблицы, materialized view, словаря или базы данных. Если сущность не была отсоединена PERMANENTLY, при следующем запуске сервера он прочитает метаданные и снова присоединит таблицу/представление/словарь/базу данных. Если сущность была отсоединена PERMANENTLY, автоматического повторного присоединения не будет.

Независимо от того, была ли таблица, словарь или база данных отсоединена навсегда, вы в любом случае можете присоединить их обратно с помощью запроса ATTACH. Системные таблицы логов также можно присоединить обратно (например, query_log, text_log и т. д.). Другие системные таблицы нельзя присоединить повторно. При следующем запуске сервера он снова присоединит эти таблицы.

ATTACH MATERIALIZED VIEW не работает с кратким синтаксисом (без SELECT), но ее можно присоединить с помощью запроса ATTACH TABLE.

Обратите внимание, что нельзя отсоединить навсегда таблицу, которая уже отсоединена (временно). Но ее можно присоединить обратно, а затем снова отсоединить навсегда.

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

Модификатор SYNC выполняет действие без задержки.

Пример

Создание таблицы:

Querysql
CREATE TABLE test ENGINE = MergeTree ORDER BY () AS SELECT * FROM numbers(10);
SELECT * FROM test;
Responsetext
┌─number─┐
│      0 │
│      1 │
│      2 │
│      3 │
│      4 │
│      5 │
│      6 │
│      7 │
│      8 │
│      9 │
└────────┘

Отсоединение таблицы:

Querysql
DETACH TABLE test;
SELECT * FROM test;
Responsetext
Received exception from server (version 21.4.1):
Code: 60. DB::Exception: Received from localhost:9000. DB::Exception: Table default.test does not exist.

См. также

Navigation