You need to enable JavaScript to run this app.
导航
DETACH语句 (DETACH)
最近更新时间:2024.11.06 13:58:48首次发布时间:2024.11.01 11:00:44

分离一个表、物化视图、字典或数据库。
语法

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

分离操作不会删除表、物化视图、字典或数据库的数据或元数据。如果实体未被永久分离,在下次服务器启动时,服务器将读取元数据并重新识别表/视图/字典/数据库。如果实体被永久分离,则不会自动重新识别。
无论表、字典或数据库是否被永久分离,都可以使用 ATTACH 查询重新附加它们。系统日志表(例如 query_log、text_log 等)也可以重新附加。其他系统表不能重新附加。在下次服务器启动时,服务器将重新识别这些表。
请注意,不能永久分离已经分离的表(临时)。但可以先重新附加,然后再次永久分离。
此外,不能删除已分离的表,也不能创建与永久分离的表同名的表,也不能使用 RENAME TABLE 查询将其替换为其他表。
SYNC 修饰符立即执行操作。
示例
创建表:

CREATE TABLE db1.test (i Int64) ENGINE = CnchMergeTree() ORDER BY i 
INSERT INTO db1.test  SELECT number FROM numbers(10);
SELECT * FROM db1.test;

┌─number─┐
│      0 │
│      1 │
│      2 │
│      3 │
│      4 │
│      5 │
│      6 │
│      7 │
│      8 │
│      9 │
└────────┘

分离一张表
查询语句:

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.