truncate 和delete

本文详细对比了数据库操作中truncate和delete的区别,包括事务处理、日志记录方式、外键约束处理、空间释放、数据筛选、标识重置及触发器激活等方面,帮助读者理解两者在不同场景下的适用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

truncate和delete
1.truncate 是ddl语言,执行后事务会立即自动提交生效,时间很短,所以不能rollback;
delete是dml语言,执行后不会自动提交,会先放到rollback segment中,等事务提交后才生效,可以rollback;
2.truncate 是最小模式记录日志,delete以完整模式记录日志,所以truncate比delete速度快;
3.在有外键约束的情况下,不能直接使用truncate删除数据,要先删除外键;
delete可以进行删除;
4.truncate释放空间,delete不释放空间;(drop会全部释放)
5.truncate删除表中所有数据;delete可以删除表中所有数据delete from table,也可以只删除部分数据,delete from table where (删除where过滤条件为true的部分)
6.delete和truncate都只是删除数据而不会删除标的结构(drop会删除结构,被依赖的触发器,约束,索引;会保留存储过程和函数,不过会变为无效状态)
7.delete操作会激活触发器;truncate不会;
8.delete删除数据后新行标识会延续原来的标识;truncate删除数据后标识会重置为最初的标识(一般从1开始)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值