Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

DETACH

Demande au serveur "d'oublier" l'existence d'une table, d'une vue matérialisée, d'un dictionnaire ou d'une base de données.

Syntaxe

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

Le détachement ne supprime ni les données ni les métadonnées d’une table, d’une vue matérialisée, d’un dictionnaire ou d’une base de données. Si une entité n’a pas été détachée PERMANENTLY, au prochain démarrage du serveur, celui-ci lira les métadonnées et rattchera de nouveau la table/la vue/le dictionnaire/la base de données. Si une entité a été détachée PERMANENTLY, il n’y aura pas de rattachement automatique.

Qu’une table, un dictionnaire ou une base de données ait été détaché de manière permanente ou non, vous pouvez dans les deux cas les rattacher à l’aide de la requête ATTACH. Les tables de logs système peuvent également être rattachées (par ex. query_log, text_log, etc.). Les autres tables système ne peuvent pas être rattachées. Au prochain démarrage du serveur, celui-ci rattachera de nouveau ces tables.

ATTACH MATERIALIZED VIEW ne fonctionne pas avec la syntaxe courte (sans SELECT), mais vous pouvez la rattacher à l’aide de la requête ATTACH TABLE.

Notez que vous ne pouvez pas détacher de manière permanente une table déjà détachée (temporairement). En revanche, vous pouvez la rattacher, puis la détacher à nouveau de manière permanente.

De plus, vous ne pouvez pas DROP la table détachée, ni exécuter CREATE TABLE avec le même nom qu’une table détachée de manière permanente, ni la remplacer par une autre table avec la requête RENAME TABLE.

Le modificateur SYNC exécute l’action sans délai.

Exemple

Création d’une table :

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

Détacher la table :

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.

Voir aussi

Navigation