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
のように。この句が使用されない場合、テーブルはクラスター再起動時(例: アップグレード中)に再アタッチされます。
関連情報