TRUNCATE TABLE

从表中移除所有行,但保持表不变(包括表的所有权限和约束条件)。同时删除表的加载元数据,以便在命令完成后可以再次将相同的文件加载到表中。

请注意,这与 DROP TABLE 不同,后者从系统中移除表,但保留表的一个版本(及其加载历史记录),以便可以恢复。

另请参阅:

CREATE TABLE

语法

TRUNCATE [ TABLE ] [ IF EXISTS ] <name>
Copy

参数

name

指定要截断的表的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写(例如,"My Object")。

如果表标识符不是完全限定的(以 db_name.schema_name.table_nameschema_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        |
----------+
Copy
语言: 中文