oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645
截断表
事务处理本身是保护数据完整性的一个手段,但是在使用事务处理的过程之中需要注意一点
在用户更新数据后还未进行事务提交时,如果发生了 DDL 操作,所有的事务都会自动提交
假如说现在有一张表中的所有数据不再需要了,那么首先想到的是将数据表中的全部数据使用DELETE 删除
在这样的删除过程中就会出现以下情况
由于事务的控制,所以导致数据不会立刻被删除。同时这些数据所占用的资源不会立刻消失。也就是说在一段时间之内,此数据是依然会存在的。但是如果这个时候执行了一个表创建之类的数据定义操作,该事务会被自动提交,即这时数据表内容会自动删除,即使使用 rollback也无法恢复
所以如果使用 delete删除,那么就有可能出现资源被占用的情况
为此,Oracle 提供了一种称为截断表的概念,如果表被截断,数据表所占用的资源将全部释放,同时将无法使用事务进行恢复
truncate table 表名称;
截断 myemp 表
SQL> truncate table myemp;
表被截断。
上面的代码实现数据表 myemp 中所有记录被删除
这个时候才属于彻底的资源释放。也就是说即使这时再使用 rollback也无法恢复数据