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
|
可以
|
不变
|
不回收
|
慢
|
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21416913/viewspace-718635/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21416913/viewspace-718635/