在truncate语句之后,表结构保持不变,并且只有记录被删除(使用自动提交)。那么truncate是DDL语句的原因是什么呢?
发布于 2014-09-26 23:57:36
我想在这里添加一些解释:默认情况下,在截断表时,您不仅删除了行,还隐式地告诉Oracle数据库还执行以下任务:
释放已删除行使用的所有空间,MINEXTENTS存储参数指定的行除外
将下一个存储参数设置为截断过程从段中移除的最后一个范围的大小
因此,它通过重置高水位线来更改存储定义和表的结构。
它也不能是DML,对吧?无法指定Where子句或随DDL语句一起使用。如果truncate是DML语句,那么Oracle将允许我们将truncate与where子句一起使用。
注: SQL中的WHERE子句指定SQL数据操作语言(DML)语句应仅影响满足指定标准的行。
发布于 2014-09-26 20:45:33
TRUNCATE重置了表的高水位线,有效地消除了以前存在的所有行。将它作为DDL语句处理可以让它超快,因为它允许它在不保留撤消(回滚)信息的情况下工作,就像DML语句一样。
https://stackoverflow.com/questions/26059855
复制相似问题