首批通过分布式安全可靠测评,为关键业务系统打造
TRUNCATE TABLE
更新时间:2026-03-26 08:54:20
描述
该语句用于完全清空指定表,但是保留表结构,包括表中定义的分区信息。从逻辑上说,该语句与用于删除所有行的 DELETE FROM 语句相同。
使用限制及注意事项
TRUNCATE TABLE 语句与 DELETE FROM 语句有以下不同:
TRUNCATE操作删除并重新创建表,这比逐行删除要快得多,特别是对于大表。TRUNCATE TABLE语句执行结果显示影响行数始终显示为0行。使用
TRUNCATE TABLE语句,表管理程序不记得最后被使用的AUTO_INCREMENT值,但是会从头开始计数。TRUNCATE语句不能在进行事务处理和表锁定的过程中进行,如果使用将会报错。只要表定义文件是合法的,则可以使用
TRUNCATE TABLE把表重新创建为一个空表,即使数据或索引文件已经被破坏。
权限要求
执行 TRUNCATE TABLE 语句,需要当前用户拥有表的 DROP 权限。有关 OceanBase 数据库权限的详细介绍,请参见 Oracle 模式下的权限分类。
语法
TRUNCATE [TABLE] [schema.]table_name;
参数解释
| 参数 | 描述 |
|---|---|
| schema. | 指定 Schema。如果省略 schema,则默认该表在当前 Schema 中。 |
| table_name | 指定表名。 |
示例
完全清空表 tb1。
obclient> TRUNCATE TABLE tbl1;
Query OK, 0 rows affected