Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

TRUNCATE

删除表中的所有行,而不执行表扫描:此操作是非限定的 DELETE 操作的替代方法,其速度更快。要执行 TRUNCATE 命令,您必须是表的所有者或超级用户。

TRUNCATE 的效率要比 DELETE 高很多,不需要 VACUUM 和 ANALYZE。不过请注意,TRUNCATE 在其运行的事务中提交事务。

语法

Copy
TRUNCATE [ TABLE ] table_name

参数

TABLE

可选关键字。

table_name

一个临时或永久表。只有表所有者或超级用户可以截断表。

您可以截断任何表,包括在外键约束中引用的表。

在截断表后,对表运行 ANALYZE 命令。在截断表后,无需对表执行 vacuum 操作。

使用说明

TRUNCATE 命令提交运行该命令的事务;因此,您无法回滚 TRUNCATE 操作,TRUNCATE 命令可能在提交自身时提交其他操作。

示例

使用 TRUNCATE 命令可以删除 CATEGORY 表中的所有行:

Copy
truncate category;

尝试回滚 TRUNCATE 操作:

Copy
begin; truncate date; rollback; select count(*) from date; count ------- 0 (1 row)

DATE 表在 ROLLBACK 命令后保留为空,因为已自动提交 TRUNCATE 命令。

本页内容: