ITPub博客

首页 > Linux操作系统 > Linux操作系统 > truncate和delete 的区别

truncate和delete 的区别

原创 Linux操作系统 作者:Xinspirit 时间:2012-03-15 14:15:45 0 删除 编辑

SQL> create table t1
  2  ( i int,
  3    a int
  4  );

表已创建。


SQL> insert into t1 values (2,3);

已创建 1 行。

SQL> commit;

提交完成。

SQL> insert into t1 values (3,4);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select * from t1;

         I          A
---------- ----------
         2          3
         3          4

SQL> delete t1;

已删除2行。

SQL> desc t1;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------

 I                                                  NUMBER(38)
 A                                                  NUMBER(38)

SQL> rollback;

回退已完成。

SQL> select * from t1;

         I          A
---------- ----------
         2          3
         3          4

SQL> delete t1 where i=3;

已删除 1 行。

SQL> select * from t1;

         I          A
---------- ----------
         2          3

SQL> rollback;

回退已完成。

SQL> select * from t1;

         I          A
---------- ----------
         2          3
         3          4

SQL> delete t1 where i=3;

已删除 1 行。

SQL> commit;

提交完成。

SQL> select * from t1;

         I          A
---------- ----------
         2          3

SQL> rollback;

回退已完成。

SQL> select * from t1;

         I          A
---------- ----------
         2          3

SQL> select * from t1;

         I          A
---------- ----------
         2          3

SQL> insert into t1 values (3,4);

已创建 1 行。

SQL> select * from t1;

         I          A
---------- ----------
         2          3
         3          4

SQL> truncate t1;
truncate t1
          *
第 1 行出现错误:
ORA-03290: 无效的截断命令 - 缺失 CLUSTER 或 TABLE 关键字


SQL> truncate table t1;

表被截断。

SQL> desc t1;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------

 I                                                  NUMBER(38)
 A                                                  NUMBER(38)

SQL> rollback;

回退已完成。

SQL> select * from t1;

未选定行

实验结果:truncate 是DDL语句,自带隐式commit,不可rollback,而delete 在没有commit的前提下是可以进行回滚的。

truncate操作与delete操作对比
操作
回滚
高水线
空间
效率
Truncate
不能
下降
回收
delete
可以
不变
不回收


 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21416913/viewspace-718635/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: ORACLE AWR
请登录后发表评论 登录
全部评论

注册时间:2009-04-18

  • 博文量
    39
  • 访问量
    66043