400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
系统配置参数
SQL 参考
常见问题(FAQ)
新架构 FAQ
集群部署 FAQ
SQL 查询 FAQ
MatrixGate FAQ
运维 FAQ
监控告警 FAQ
PXF FAQ
PLPython FAQ
性能 FAQ
清空表的所有行。
TRUNCATE [TABLE] [ONLY] name [ * ] [, ...]
[ RESTART IDENTITY | CONTINUE IDENTITY ] [CASCADE | RESTRICT]
TRUNCATE快速删除一个表或一组表中的所有行。 它与在每个表上进行不限定DELETE的效果相同, 但是由于它实际上并不扫描表,因此速度更快。 这在大型表上最有用。
您必须在表上具有TRUNCATE特权才能清空表行。
TRUNCATE在对其操作的表上获取访问排他锁,这将阻止该表上的所有其他并发操作。 如果指定了RESTART IDENTITY,则将要重新计数的所有序列都将被排他地锁定。 如果需要并发访问表,则应改用DELETE命令。
name
CASCADE
RESTART IDENTITY
CONTINUE IDENTITY
RESTRICT
TRUNCATE将不会运行表可能存在的任何用户定义的ON DELETE触发器。
TRUNCATE不会清空从指定表继承的任何表。 仅指定的表被清空,而不是其子表。
TRUNCATE不会清空分区表的任何子表。 如果指定分区表的子表,则TRUNCATE不会从该表及其子表中删除行。
TRUNCATE不是MVCC安全的。 清空后,如果并发事务使用清空发生之前获取的快照,则该表将对并发事务显示为空。
对于表中的数据,TRUNCATE是事务安全的:如果所属的事务未提交,则清空将被安全地回滚。
TRUNCATE在其操作的每个表上获取ACCESS EXCLUSIVE锁,该锁将阻止该表上的所有其他并发操作。 如果需要并发访问表,则应改用DELETE命令。
当指定了RESTART IDENTITY时,隐式的ALTER SEQUENCE RESTART操作也将以事务方式完成; 也就是说,如果所在的事务没有提交,它们将被回滚。 这不同于ALTER SEQUENCE RESTART的正常行为。 请注意,如果在事务回滚之前对重新启动的序列执行了任何其他序列操作,则这些操作对序列的影响将被回滚,但不会对currval()产生影响。 也就是说,在事务currval()之后,它将继续反映在失败的事务中获得的最后一个序列值,即使序列本身可能不再与此一致。 这类似于事务失败后currval()的通常行为。
清空表films和distributors:
TRUNCATE films, distributors;
相同,并重置所有关联的序列生成器:
TRUNCATE films, distributors RESTART IDENTITY;
SQL:2008标准包括带有语法TRUNCATE TABLE tablename的TRUNCATE命令。 子句CONTINUE IDENTITY/RESTART IDENTITY也出现在该标准中,但是尽管具有相关的含义,但略有不同。 该命令的一些并发行为由标准实现定义,因此应考虑上述注意事项,并在必要时与其他实现进行比较。