我的java天地

oracle中字段类型修改

oracle 修改字段类型
2009-02-02 17:33

今天公司因为业务需要,修要修改某个字段数据类型有number(5),变为number(5,2)型

要是没有数据的话直接用以下语句即可

alter   table tb_test modify permile number(5,2);

但是有数据的话 就不能用上面方法了,

alter table tb_test add permile_temp number(5,2)

update tb_test set permile_temp=permile;

alter table drop column permile;

alter table test rename column permile_temp to permile;

这种方法会使列名发生变化,而且字段顺序增加 有可能发生行迁移,对应用程序会产生影响

以下方法是比较好的方法

不用使列名发生变化 也不会发生表迁移,但这个有个缺点是表要更新两次

如果数据量较大的话 产生的undo和redo更多 ,前提也是要停机做

要是不停机的话 ,也可以采用在线重定义方式来做

以下是脚本:

alter table b add ccc varchar2(15);
update b set ccc=cc;
alter table b drop column cc;
alter table b rename column ccc to cc;
update b set cc='0000'||cc;
select * from b;
update b set cc='2'||cc;
update b set cc=substr(cc,1,1)||substr(cc,-3);


给表添加约束
alter table parent
add constraint test primary key(name)

posted on 2009-04-12 13:57 tobyxiong 阅读(1062) 评论(0)  编辑  收藏 所属分类: DATABASES


只有注册用户登录后才能发表评论。


网站导航:
 
<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

导航

统计

常用链接

留言簿(3)

随笔分类(144)

随笔档案(157)

相册

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜