截断表
TRUNCATE TABLE 移除与目标表及其投影相关联的所有存储。Vertica 会保留表和投影定义。如果截断后的表包含过时投影,则当 TRUNCATE TABLE 返回时,这些投影将被清除并标记为最新。
TRUNCATE TABLE 在语句执行后提交整个事务,即使未能截断表也是如此。不能回退 TRUNCATE TABLE 语句。
使用 TRUNCATE TABLE 进行测试。可以使用它来移除表中的所有数据并向其中加载新数据,而无需重新创建表及其投影。
表锁定
TRUNCATE TABLE 会对表采用 O(所有者)锁,直到截断过程完成。随后释放保存点。
如果操作无法在目标表上获取 O lock,Vertica 将尝试关闭该表上运行的任何内部 tuple mover 会话。如果成功,则可以继续操作。在用户会话中运行的显式 Tuple Mover 操作不会关闭。如果显式 Tuple Mover 操作在表上运行,则该操作仅在 Tuple Mover 操作完成后继续。
限制
不能截断外部表。
示例
=> INSERT INTO sample_table (a) VALUES (3);
=> SELECT * FROM sample_table;
a
---
3
(1 row)
=> TRUNCATE TABLE sample_table;
TRUNCATE TABLE
=> SELECT * FROM sample_table;
a
---
(0 rows)