TRUNCATE TABLE¶
从表中移除所有行,但保持表不变(包括表的所有权限和约束条件)。同时删除表的加载元数据,以便在命令完成后可以再次将相同的文件加载到表中。
请注意,这与 DROP TABLE 不同,后者从系统中移除表,但保留表的一个版本(及其加载历史记录),以便可以恢复。
- 另请参阅:
语法¶
TRUNCATE [ TABLE ] [ IF EXISTS ] <name>
参数¶
name
指定要截断的表的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写(例如,
"My Object"
)。如果表标识符不是完全限定的(以
db_name.schema_name.table_name
或schema_name.table_name
的形式),则该命令将在会话的当前架构中查找表。
使用说明¶
DELETE 和 TRUNCATE TABLE 都会在数据保留期内维护已删除的数据以用于恢复目的(即,使用 Time Travel)。但是,当表被截断时,加载元数据将无法恢复。
如果表名是完全限定的,或者会话当前正在使用数据库和架构,则
TABLE
关键字是可选的。
示例¶
-- create a basic table CREATE OR REPLACE TABLE temp (i number); -- populate it with some rows INSERT INTO temp SELECT seq8() FROM table(generator(rowcount=>20)) v; -- verify that the rows exist SELECT COUNT (*) FROM temp; ----------+ count(*) | ----------+ 20 | ----------+ -- truncate the table TRUNCATE TABLE IF EXISTS temp; -- verify that the table is now empty SELECT COUNT (*) FROM temp; ----------+ count(*) | ----------+ 0 | ----------+