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