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