ClickHouse/docs/ja/sql-reference/statements/detach.md
2024-11-18 11:58:58 +09:00

2.9 KiB

slug sidebar_position sidebar_label title
/ja/sql-reference/statements/detach 43 DETACH DETACH ステートメント

テーブル、Materialized View、Dictionary、データベースの存在をサーバーに「忘れさせる」ためのコマンドです。

構文

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

DETACHはテーブル、Materialized View、Dictionary、データベースのデータやメタデータを削除しません。エンティティがPERMANENTLYでない場合、次回サーバー起動時にサーバーはメタデータを読み取り、再びテーブル/View/Dictionary/データベースを認識します。エンティティがPERMANENTLYでDETACHされた場合は自動的に認識されません。

テーブル、Dictionary、データベースが恒久的にDETACHされたか否かにかかわらず、ATTACHクエリを使用して再アタッチできます。システムログテーブル(例: query_log, text_logなど)も再アタッチ可能です。他のシステムテーブルは再アタッチできませんが、次回サーバー起動時にサーバーはこれらのテーブルを再認識します。

ATTACH MATERIALIZED VIEWは短い構文(SELECTなし)では動作しませんが、ATTACH TABLEクエリを使用してアタッチすることができます。

既に一時的にDETACHされたテーブルを恒久的にDETACHすることはできません。ただし、一旦アタッチバックしてから再度恒久的にDETACHすることは可能です。

また、DETACHされたテーブルをDROPしたり、同名のテーブルをCREATE TABLEで作成したり、RENAME TABLEクエリで他のテーブルに置き換えることはできません。

SYNC修飾子を使用すると、アクションを遅延なく実行します。

テーブルを作成する:

クエリ:

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する:

クエリ:

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 does not exist.

関連情報