Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

DETACH

Hace que el servidor "olvide" que existe una tabla, una vista materializada, un diccionario o una base de datos.

Sintaxis

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

Al desvincular, no se eliminan los datos ni los metadatos de una tabla, una vista materializada, un diccionario o una base de datos. Si una entidad no se desvinculó PERMANENTLY, en el siguiente inicio del servidor este leerá los metadatos y volverá a adjuntar la tabla/vista/diccionario/base de datos. Si una entidad se desvinculó PERMANENTLY, no habrá restauración automática.

Tanto si una tabla, un diccionario o una base de datos se desvinculó permanentemente como si no, en ambos casos puede volver a adjuntarlos mediante la consulta ATTACH. Las tablas de log del sistema también se pueden volver a adjuntar (p. ej., query_log, text_log, etc.). Otras tablas del sistema no se pueden volver a adjuntar. En el siguiente inicio del servidor, este volverá a adjuntar esas tablas.

ATTACH MATERIALIZED VIEW no funciona con la sintaxis corta (sin SELECT), pero puede adjuntarla mediante la consulta ATTACH TABLE.

Tenga en cuenta que no puede desvincular permanentemente una tabla que ya está desvinculada (temporalmente). Pero puede volver a adjuntarla y luego desvincularla permanentemente otra vez.

Además, no puede DROP la tabla desvinculada, ni CREATE TABLE con el mismo nombre que una tabla desvinculada permanentemente, ni reemplazarla por otra tabla con la consulta RENAME TABLE.

El modificador SYNC ejecuta la acción sin demora.

Ejemplo

Creación de una tabla:

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 │
└────────┘

Desvincular la tabla:

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.

Véase también

Navigation