免费注册 查看新帖 |

Chinaunix

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

不太明白DB2的Alter table是怎么做的 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-11 09:39 |只看该作者 |倒序浏览
对一个普通的table,增加一列。(环境:  DB2 UDB V8.2,OS:NT,客户端:Quest Central).
试验了两次, 从QuestCenter工具build的script不太一样, 想不明白为什么会这样?

A 增加一列:字符型,tmpCol varchar(40)
产生的script如下:
ALTER TABLE BACK.FAMILY
  ADD tmpCol VARCHAR(40);
#SYNC 10;

B 增加一列:数字型,tmpCol integer
产生的script如下:
#QSCOMMAND EXPORT TO '%DATA_PATH%\DWCTRLDB.BACK.FAMILY.25.1\FAMILY.ixf'
  OF IXF
  SELECT * FROM BACK.FAMILY;
#SYNC 10;

DROP TABLE BACK.FAMILY;

#SYNC 20;
CREATE TABLE BACK.FAMILY
("FAMILYID"      INTEGER         NOT NULL,
  "FAMILY"        VARCHAR(15),
  "FAMILY_ALIAS"  VARCHAR(25),
  tmpCol          INTEGER,
  "INTRODATE"     DATE
)
  DATA CAPTURE NONE
IN "USERSPACE1"
  PARTITIONING KEY
   (FAMILYID
   ) USING HASHING
  NOT LOGGED INITIALLY
  ORGANIZE BY DIMENSIONS
   ("FAMILYID"
   );

#SYNC 30;

ALTER TABLE BACK.FAMILY
  LOCKSIZE ROW
  APPEND OFF
  NOT VOLATILE
  LOG INDEX BUILD NULL;

#SYNC 40;

#QSCOMMAND IMPORT FROM '%DATA_PATH%\DWCTRLDB.BACK.FAMILY.25.1\FAMILY.ixf'
  OF IXF
  MODIFIED BY COMPOUND=5
              NOCHECKLENGTHS
  COMMITCOUNT 1000
--RESTARTCOUNT xxx
  INSERT
  INTO BACK.FAMILY
   (FAMILYID,
    FAMILY,
    FAMILY_ALIAS,
    INTRODATE
   );

#SYNC 50;

RUNSTATS ON TABLE BACK.FAMILY
  AND INDEXES ALL
  SHRLEVEL REFERENCE;
#SYNC 60;

后者给我的感觉是将表都全部重构了, 步骤这么多, 不知道为什么?
请教一下大家,谢谢

[ 本帖最后由 zjsharp 于 2006-11-11 09:43 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-11-13 16:12 |只看该作者
V8.2的新功能,V8.2之前的版本是不能在alter table语句中增加column和修改column的属性的。现在的alter table使用存储过程把原来的表删除了,然后重新新建一个表。(估计是这样,没看过准确文档)

Changing generated column properties without having to
recreate the table

You can now use the ALTER COLUMN clause in the
ALTER TABLE statement to alter the various ways that a
column value can be generated.
Previously, generated expression or identity attributes
could be assigned to a column only when it was created.
Although the expression itself could be changed later,
once a generated column was created, it could not be
changed to a non-generated column without dropping and
then recreating the table. Before dropping the table, you
had to export the data in the table and then reload that
data into the recreated table with a redefined column.

[ 本帖最后由 lklgdkp 于 2006-11-13 16:24 编辑 ]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2006-11-13 21:52 |只看该作者
这个问题比较怪,也许就是QuestCenter开发者的一个疏忽。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP