TRUNCATE
语法
TRUNCATE [ TABLE ] name [, ...] [ CASCADE | RESTRICT ]
描述
TRUNCATE 快速地从一堆表中删除所有行。它和在每个表上进行无条件的 DELETE 有同样的效果,不过因为它不做表扫描,因而快得多。在大表上最有用。
参数
- name
要清空的表名字(可以有模式修饰)
- CASCADE
级联清空所有在该表上有外键引用的表,或者由于 CASCADE 而被添加到组中的表。
- RESTRICT
如果其他表在该表上有外键引用则拒绝清空。这是缺省。
注意
只有表的所有者可以 TRUNCATE 它。
如果从其它表有到某个表的外键引用,那么就不能对该表使用 TRUNCATE ,除非这些表在同一个命令中也被清空。在这种情况下检查有效性要求进行表扫描,而 TRUNCATE 并不做这样的事情。CASCADE 选项可以用于级联包含所有依赖表,但是使用此选线必须十分小心,否则可能丢失原本不想丢失的数据。
TRUNCATE 不会运行任何在该表上的 ON DELETE 触发器。
例子
清空 bigtable 和 fattable 表:
TRUNCATE TABLE bigtable, fattable;
清空 othertable 表,并且级联清空所有通过外键约束引用 othertable 的表:
TRUNCATE othertable CASCADE;
兼容性
SQL 标准里没有 TRUNCATE 命令。