免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1321 | 回复: 0
打印 上一主题 下一主题

DB2 CREATE TABLE 语句也可以回滚 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-23 03:03 |只看该作者 |倒序浏览
在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中先创建的表也回滚掉了。
 
看来新学一门数据库,得忘掉在其他数据库中所学的东西。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP