メインコンテンツへスキップ
サーバーが、テーブル、materialized view、Dictionary、またはデータベースの存在を”忘れる”ようにします。 構文
DETACH TABLE|VIEW|DICTIONARY|DATABASE [IF EXISTS] [db.]name [ON CLUSTER cluster] [PERMANENTLY] [SYNC]
デタッチしても、テーブル、materialized view、Dictionary、またはデータベースのデータやメタデータは削除されません。エンティティが PERMANENTLY でデタッチされていない場合、次回サーバーの起動時にサーバーはメタデータを読み込み、そのテーブル/ビュー/Dictionary/データベースを再度認識します。エンティティが PERMANENTLY でデタッチされている場合は、自動的に再度認識されることはありません。 テーブル、Dictionary、またはデータベースが永続的にデタッチされているかどうかにかかわらず、いずれの場合も ATTACH クエリを使用して再アタッチできます。 システムのログテーブルも再アタッチできます (例: query_logtext_log など) 。そのほかのシステムテーブルは再アタッチできません。これらのテーブルは、次回サーバーの起動時にサーバーが再度認識します。 ATTACH MATERIALIZED VIEW は短縮構文 (SELECT なし) では機能しませんが、ATTACH TABLE クエリを使ってアタッチできます。 なお、すでに (一時的に) デタッチされているテーブルを永続的にデタッチすることはできません。ただし、いったん再アタッチしてから、あらためて永続的にデタッチすることはできます。 また、デタッチされたテーブルを DROP したり、永続的にデタッチされたテーブルと同じ名前で CREATE TABLE したり、RENAME TABLE クエリで別のテーブルに置き換えたりすることはできません。 SYNC modifier は、遅延なくアクションを実行します。 テーブルを作成します:
Query
CREATE TABLE test ENGINE = MergeTree ORDER BY () AS SELECT * FROM numbers(10);
SELECT * FROM test;
Response
┌─number─┐
│      0 │
│      1 │
│      2 │
│      3 │
│      4 │
│      5 │
│      6 │
│      7 │
│      8 │
│      9 │
└────────┘
テーブルをデタッチする:
Query
DETACH TABLE test;
SELECT * FROM test;
Response
Received exception from server (version 21.4.1):
Code: 60. DB::Exception: Received from localhost:9000. DB::Exception: Table default.test does not exist.
ClickHouse Cloud では、PERMANENTLY 句を使用してください (例: DETACH TABLE <table> PERMANENTLY) 。この句を使用しない場合、アップグレード時などにクラスターが再起動すると、テーブルは再度アタッチされます。
関連項目
最終更新日 2026年6月10日