在ORACLE中,CREATE TABLE语句是不能回滚的。
SQL> show autocommit
autocommit OFF
SQL> create table test(id int);
表已创建。
SQL> insert into test values(1);
已创建 1 行。
SQL> select * from test;
ID
----------
1
SQL> rollback;
回退已完成。
SQL> select * from test;
未选定行
SQL> select table_name from user_tables
2 where table_name='TEST';
TABLE_NAME
------------------------------------------------------------
TEST
新插入的记录是可以回滚的,但是表是不能回滚掉的,除非手工发出DROP TABLE语句。
而在DB2中,却不一样:
db2 => list command options
命令行处理器选项设置
后端进程等待时间(秒) (DB2BQTIME) = 1
连接至后端的重试次数 (DB2BQTRY) = 60
请求队列等待时间(秒) (DB2RQTIME) = 5
输入队列等待时间(秒) (DB2IQTIME) = 5
命令选项 (DB2OPTIONS) =
选项 描述 当前设置
------ ---------------------------------------- ---------------
-a 显示 SQLCA OFF
-c 自动落实 OFF
-d 检索并显示 XML 声明 OFF
-e 显示 SQLCODE/SQLSTATE OFF
-f 读取输入文件 OFF
-i 显示 XML 数据并带有缩进 OFF
-l 将命令记录到历史记录文件中 OFF
-m 显示受影响的行数 OFF
-n 除去换行字符 OFF
-o 显示输出 ON
-p 显示交互式输入提示符 ON
-q 保留空格和换行符 OFF
-r 将输出保存到报告文件 OFF
-s 在命令出错时停止执行 OFF
-t 设置语句终止字符 OFF
-v 回传当前命令 OFF
-w 显示 FETCH/SELECT 警告消息 ON
-x 不打印列标题 OFF
-z 将所有输出保存到输出文件 OFF
db2 => select * from test
SQL0204N "SHOUPENG.YAN.TEST" 是一个未定义的名称。 SQLSTATE=42704
db2 => create table test(id int)
DB20000I SQL 命令成功完成。
db2 => insert into test values(1)
DB20000I SQL 命令成功完成。
db2 => insert into test values(2)
DB20000I SQL 命令成功完成。
db2 => select * from test
ID
-----------
1
2
2 条记录已选择。
db2 => rollback
DB20000I SQL 命令成功完成。
db2 => select * from test
SQL0204N "SHOUPENG.YAN.TEST" 是一个未定义的名称。 SQLSTATE=42704
db2 => list tables
表/视图
模式
类型 创建时间
------------------------------- --------------- ----- --------------------------
VIEW1 SHOUPENG.YAN V 2011-10-20-12.42.39.046002
1 条记录已选择。
可以看到在DB2中先创建的表也回滚掉了。
看来新学一门数据库,得忘掉在其他数据库中所学的东西。
阅读(4331) | 评论(0) | 转发(0) |