DETACH ステートメント
サーバーにテーブル、マテリアライズドビュー、ディクショナリ、またはデータベースの存在を「忘れさせ」ます。
構文
テーブル、マテリアライズドビュー、ディクショナリ、データベースをデタッチしても、そのデータやメタデータは削除されません。エンティティを PERMANENTLY を付けずにデタッチした場合、次回のサーバー起動時にサーバーはメタデータを読み込み、テーブル/ビュー/ディクショナリ/データベースを再び認識します。エンティティを PERMANENTLY を付けてデタッチした場合、自動的に再認識されることはありません。
テーブル、ディクショナリ、データベースが永続的にデタッチされているかどうかに関わらず、どちらの場合でも ATTACH クエリを使用して再アタッチできます。
query_log、text_log などのシステムログテーブルも再アタッチできます。他のシステムテーブルは再アタッチできません。次回のサーバー起動時にサーバーがそれらのテーブルを再び認識します。
ATTACH MATERIALIZED VIEW は短い構文(SELECT なし)では動作しませんが、ATTACH TABLE クエリを使用してアタッチできます。
すでに(一時的に)デタッチされているテーブルを永続的にデタッチすることはできません。ただし、いったんアタッチし直してから再度永続的にデタッチすることはできます。
また、デタッチされたテーブルを DROP したり、永続的にデタッチされたものと同じ名前で CREATE TABLE したり、RENAME TABLE クエリで別のテーブルに置き換えたりすることはできません。
SYNC 修飾子は、遅延なしでアクションを実行します。
例
テーブルの作成:
クエリ:
結果:
テーブルの切り離し:
クエリ:
結果:
ClickHouse Cloud では、PERMANENTLY 句(例: DETACH TABLE <table> PERMANENTLY)を使用する必要があります。この句を指定しないと、テーブルはクラスターの再起動時(アップグレード時など)に自動的に再アタッチされます。
関連項目