delete/truncate/drop 区别

1 drop

  • drop操作会删除表结构、依赖的约束、索引以及触发器,并且会将依赖该表的所有存储过程和视图设置为invalid。
  • drop操作就会直接删除整个表空间。
  • DDL操作,会包含implicit commit,因此不能回滚,也不能不触发触发器。

2 truncate

  • truncate 只会删除表中的数据,并不会删除表结构。
  • truncate 是相对于先执行drop操作,然后再执行create操作,执行完成后会恢复初始的表空间。
  • 是DDL操作,会包含implicit commit,因此不能回滚,也不能不触发触发器。

3 delete

  • delete 只会删除表中的数据,并不会删除表结构。
  • delete 操作并不会更改所占用的区的空间。
  • delete 语句是DML语句,这个操作会放到 rollback segement 中,事务提交之后才生效,并且可以执行对应的触发器。
什么是 Rollback Segment

Rollback Segments是在你数据库中的一些存储空间,它用来临时的保存当数据库数据发生改变时的先前值,Rollback Segment主要有两个目的:

  1. 如果因为某种原因或者其他用用户想要通过ROLLBACK声明来取消一个人的数据操作,数据就会复原到之前为改变时的值。这种情况只在transaction的过程中有效,如果用户执行了COMMIT命令,那么ROLLBACK SEGMENT里面的值就会标识为失效的,数据改变就将永久化。

  2. 另一个目的是当有并发的 session 访问了一个数据值改变但事务还没有提交的表。如果一个SELECT语句开始读取一个表同时一个事务也在修改这个表的值,那么修改前的值就会保存到rollback segment里面,SELECT语句也是从ROLLBACK SEGMENT里面读取表的值。

参考
  1. https://blog.csdn.net/wanglei_storage/article/details/51776910
  2. https://www.jobui.com/mianshiti/it/oracle/4131/
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值