Show TOC

TRUNCATE 语句Locate this document in the navigation structure

删除表或实例化视图中的所有行,但不删除表定义。

语法

语法 1

TRUNCATE 
   TABLE<owner>.]<table-name>
   | MATERIALIZED VIEW <owner>.] <materialized-view-name>
   

语法 2

TRUNCATE TABLE  [ <owner> .]<table>  
   [ PARTITION <partition-name> 
   | SUBPARTITION <subpartition-name> ]
参数

(返回顶部)

  • PARTITION 指定要截断的分区,不影响其它分区中的数据。
    注意 在 PARTITION 子句中指定启用 RLV 的表会导致错误。
  • SUBPARTITION 截断按复合分区模式进行分区的表。
    注意 在 SUBPARTITION 子句中指定启用 RLV 的表会导致错误。
示例

(返回顶部)

  • 示例 1 删除 Sale 表的所有行:
    TRUNCATE TABLE Sale
用法

(返回顶部)

TRUNCATE 等效于不带 WHERE 子句的 DELETE 语句,但不在事务日志中记入各个行的删除情况。执行 TRUNCATE TABLE 语句后,表结构及所有索引仍然存在,直至发出 DROP TABLE 语句。列定义和约束保持不变,且权限仍然有效。

与数据定义语句一样,TRUNCATE 语句作为单个语句记入事务日志。每个删除的行不记入事务日志。

标准

(返回顶部)

  • SQL - ISO/ANSI SQL 语法的服务商扩充。
  • SAP 数据库产品 - 受 SAP ASE 支持。
权限

(返回顶部)

需要以下特权之一:
  • TRUNCATE ANY TABLE 系统特权。
  • ALTER ANY TABLE 系统特权。
  • ALTER ANY OBJECT 系统特权。
  • 对表的 TRUNCATE 特权。
  • 您拥有该对象。

对于临时表和基表,可以执行 TRUNCATE TABLE,而其他用户则对这样的表具有读取访问权限。此行为有别于 SAP SQL Anywhere,在其中需要具有独占访问权限才能截断基表。SAP IQ 表版本控制确保在进行 TRUNCATE TABLE 时其他用户具有读取访问权限;但是,这些用户看到的表的版本取决于读取和写入事务的提交时间。