在truncate语句之后,表结构保持不变,并且仅删除记录(使用自动提交)。那么,截断是DDL语句的原因是什么?
我将在此处添加一些解释:默认情况下,截断表时,您不仅在删除行,还隐式地告诉Oracle数据库也执行以下任务:
取消分配被删除的行使用的所有空间,除非由MINEXTENTS存储参数指定
将NEXT存储参数设置为通过截断过程从段中删除的最后一个扩展区的大小
因此,它通过重置高水位标记来更改存储定义和更改表的结构。
也不能是DML,对吗?无法指定where子句或DDL语句附带该子句。如果truncate是DML语句,那么Oracle将允许我们将truncate与where子句一起使用。 注意:SQL中的WHERE子句指定SQL数据操作语言(DML)语句应仅影响满足指定条件的行。