如果存在下列任何条件,则 TRUNCATE 语句失败:
- 用户不持有在表上的 Delete 访问权限。
- 该表有启用的 Delete 触发器,但用户缺少 Alter 权限。
- 在本地数据库中不存在指定的表或同义词。
- 通过 CREATE EXTERNAL TABLE 语句定义了此表。
- 指定的同义词未引用本地服务器中的表。
- 该语句为本地表指定同义词,但设置了 USETABLENAME 环境变量。
- 该语句为视图指定视图或同义词的名称。
- 该表为系统目录表或系统监视接口(SMI)表。
- 在该表上定义 R 树索引。
- 该表是在数据库中不存在对于其有效的 am_truncate 访问方式的虚拟表(或有虚拟索引接口)。
- Enterprise Replication 复制的不是表上定义的主复制。(要获取更多关于复制的信息,请参阅 GBase 8s Enterprise
Replication 指南。)
- 在表上已存在共享锁或排他锁。
- 在表上打开一个或多个游标。
- 带有 Dirty Read 隔离级别的并发会话正在读表。
- 至少有一行的另一表在指定的表上有启用的外键约束。(然而,没有行的另一表的启用的外键约束对 TRUNCATE 操作不起作用。)