oracle之truncate && delete
注意事项
1.在oracle 中数据删除后还能回滚是因为它把原始数据放到了undo表空间,
2.DML语句使用undo表空间,DDL语句不使用undo, 而delete是DML语句,truncate是DDL语句,别外DDL语句是隐式提交.所以truncate操用不能回滚,而delete操作可以
truncate与delete相同点:
1 在oracle中删除表中的数据的方法有delete,truncate
2 它们都是删除表中的数据,而不能删除表结构.
truncate与delete之间的区别
1 delete 可删除整个表的数据也可删除表中某一条或N条满足条件的数据,删除的数据可恢复.命令完成就可回滾.
2 truncate只能删除整个表的数据,自動提交的.命令完成不可回滾.truncate的速度也比delete要快得多,truncate之后,TABLE的HWM退回到 INITIAL和NEXT的位置(默认)delete 则不可以.
4 truncate 只能对TABLE,delete 可以是table,view,synonym
5 TRUNCATE TABLE 的对象必须是本模式下的,或者有drop any table的权限 而 DELETE 则是对象必须是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的权限.
一 truncate
用法:
Sql代码
truncate table T;
二 delete
用法:
Sql代码
delete T
另外在加上一个重要区别
delete在plsql中是可执行的,但是truncate在plsql中不能执行,只能用动态sql执行,如下:
Sql代码
execute immediate 'truncate table 表名';
作者“咫尺天涯”
相关新闻>>
- 发表评论
-
- 最新评论 更多>>