使用 TRUNCATE 来删除所有行

您可使用 TRUNCATE 语句来快速地从表中移除所有行,同时还移除所有对应的索引数据。在提交该事务之后,您不可恢复删除了的行。您可对包含任何列类型(包括智能大对象)的表上使用 TRUNCATE 语句。

使用 TRUNCATE 语句来移除行的速度比使用 DELETE 语句来移除它们快。在 TRUNCATE 语句之后,不必立即运行 UPDATE STATISTICS 语句。成功地执行 TRUNCATE 之后,GBase 8s 自动地更新该表及其系统目录中的索引的统计信息和分布情况,以展示在该表中或在它的 dbspace 分区中没有任何行。

要了解日志记录的描述,请参阅 事务日志记录

TRUNCATE 是数据定义语言语句,如果在该表上定义任何触发器,则该语句不激活 DELETE 触发器。要了解关于使用触发器的说明,请参阅 创建和使用触发器

如果 TRUNCATE 语句指定的表是 typed 表,则成功的 TRUNCATE 操作从那个表中以及从该表层级结构内的所有子表中移除所有行和 B-tree 结构。TRUNCATE 不等同于 DELETE 语句的 ONLY 关键字,DELETE 语句将操作限制在 typed 表层级结构内的单个表。

GBase 8s 始终对 TRUNCATE 操作进行日志记录,即使对非日志记录的表也是如此。在支持事务日志记录的数据库中,在同一事务之内的 TRUNCATE 之后,仅 SQL 的 COMMIT WORK 或 ROLLBACK WORK 语句是有效的。要获取关于使用 TRUNCATE 语句对性能的影响的信息,请参阅 GBase 8s 性能指南 。要了解完整的语法,请参阅 GBase 8s SQL 指南:语法