truncate 与 delete 、drop 【PLSQL中truncate用法】

 

注意事项
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  表名'; 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

注意最后一点,前面因为不知道truncate是DDL语言,在PLSQL中用法,结果写过程时。

 

报错:

create or replace procedure proceName  as
begin
  truncate  table TABLE_NAME;

  ……

end proceName;

 

可编译:

create or replace procedure proceName  as
begin
  execute immediate 'truncate  table TABLE_NAME;

   ……

end proceName;

 

 

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值