Chinaunix首页 | 论坛 | 博客
  • 博客访问: 131898
  • 博文数量: 37
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 375
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-13 17:31
文章分类

全部博文(37)

文章存档

2011年(1)

2010年(9)

2009年(27)

我的朋友

分类: 数据库开发技术

2009-10-08 10:50:16

问题描述:
CREATE TABLE TEST(
   col1 integer,
   col2 integer
);
希望把col2的字段类型换成Decimal(18,2)
解决方案:
1、
create table TEST_TMP(
   col1 integer,
   col2 decimal(18,2)
);
insert into TEST_TMP select * from TEST;
DROP TABLE TEST;
RENAME TABLE TEST_TMP to TEST;
优点:操作时间较短
缺点:占用双倍的空间
2、
alter table TEST add col3 decimal(18,2);
update TEST set col3=col2;
alter table TEST drop col2;
alter table TEST rename col3 to col2;
有点:占用空间较小(只是占用了一倍多些的col2空间)
缺点:update明显没有上面的select/insert效率高,同时这还会造成TEST的version升高。
阅读(887) | 评论(2) | 转发(0) |
0

上一篇:SampleID

下一篇:Identity Column

给主人留下些什么吧!~~

typot2009-10-28 20:43:55

create table没问题,但是下面的alter语句有问题,alter table tablename add c3 int;就可以了。teradata中没有PK的概念,在建表的时候的PK会被转换成Primary index,而Primary index是只能在建表时候指定(如果没有指定就用默认的)的而且不能修改。

chinaunix网友2009-10-26 21:35:47

能帮我看看下面的语法有问题吗?先谢谢了 create table transtab1(c1 char(200) not null, c2 char(55) not null) ; alter table "j15user1".transtab1 add column c3 int primary key(c1) ;