zoukankan      html  css  js  c++  java
  • truncate与delete 、drop的区别

    注意事项

    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 则不可以.
    3: truncate 只能对TABLE,delete 可以是table,view,synonym
    4: TRUNCATE TABLE 的对象必须是本模式下的,或者有drop any table的权限 而 DELETE 则是对象必须是本模式下的,或被授予 DELETE ON SCHEMA.TABLE 或DELETE ANY TABLE的权限.


    一 :truncate
    语法:
    truncate table table_name; 

    二 :delete
    语法:
    delete table_name;或者delete from table;

    三:重要区别


    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;

  • 相关阅读:
    说说移动端web开发中的点击穿透问题
    将博客搬至CSDN
    IIS(4)
    IIS(2)
    IIS(3)
    IIS(1)
    链表
    常用到的关键字
    进程与线程
    文件系统的原理
  • 原文地址:https://www.cnblogs.com/warrior4236/p/5978668.html
Copyright © 2011-2022 走看看