PostgreSQL 8.2.3 中文文档
后退快退快进前进

TRUNCATE

名称

TRUNCATE -- 清空一个或一组表

语法

TRUNCATE [ TABLE ] name [, ...] [ CASCADE | RESTRICT ]

描述

TRUNCATE 快速地从一堆表中删除所有行。它和在每个表上进行无条件的 DELETE 有同样的效果,不过因为它不做表扫描,因而快得多。在大表上最有用。

参数

name

要清空的表名字(可以有模式修饰)

CASCADE

级联清空所有在该表上有外键引用的表,或者由于 CASCADE 而被添加到组中的表。

RESTRICT

如果其他表在该表上有外键引用则拒绝清空。这是缺省。

注意

只有表的所有者可以 TRUNCATE 它。

如果从其它表有到某个表的外键引用,那么就不能对该表使用 TRUNCATE ,除非这些表在同一个命令中也被清空。在这种情况下检查有效性要求进行表扫描,而 TRUNCATE 并不做这样的事情。CASCADE 选项可以用于级联包含所有依赖表,但是使用此选线必须十分小心,否则可能丢失原本不想丢失的数据。

TRUNCATE 不会运行任何在该表上的 ON DELETE 触发器。

例子

清空 bigtablefattable 表:

TRUNCATE TABLE bigtable, fattable;

清空 othertable 表,并且级联清空所有通过外键约束引用 othertable 的表:

TRUNCATE othertable CASCADE;

兼容性

SQL 标准里没有 TRUNCATE 命令。


后退首页前进
START TRANSACTION上一级UNLISTEN