Oracle修改字段类型


由于业务的需要,我们需要将身高、体重修改为String类型,这里简要记录下操作方法,现在主要有两种方案。

1、如果没有数据可直接采用下面语句修改即可

alter table TCHARACTERCONTENT modify HEIGHT varchar2(50);

2、但是有数据的话,就不能用上面的方法了(我采用此方案)

alter table TCHARACTERCONTENT add HEIGHTtemp varchar2(50);
update TCHARACTERCONTENT set HEIGHTtemp=HEIGHT;
alter table TCHARACTERCONTENT drop column HEIGHT;
alter table TCHARACTERCONTENT rename column HEIGHTtemp to HEIGHT;
comment on column TCHARACTER_CONTENT.HEIGHT is '身高';

这种方法会使列名发生变化,而且字段顺序增加 有可能发生行迁移,对应用程序会产生影响 以下方法是比较好的方法 不用使列名发生变化 也不会发生表迁移,但这个有个缺点是表要更新两次 如果数据量较大的话 产生的undo和redo更多 ,前提也是要停机做 要是不停机的话 ,也可以采用在线重定义方式来做

以下是脚本:

alter table TCHARACTERCONTENT add HEIGHTtemp varchar2(50);
--Add/modify columns
alter table TCHARACTERCONTENT modify HEIGHT null;
update TCHARACTERCONTENT set HEIGHTtemp=HEIGHT,HEIGHT=null;
commit;
alter table TCHARACTERCONTENT modify HEIGHT varchar2(50);
update TCHARACTERCONTENT set HEIGHT=HEIGHTtemp,HEIGHTtemp=null;
commit;
alter table TCHARACTERCONTENT drop column HEIGHTtemp;
alter table TCHARACTERCONTENT modify HEIGHT not null;
select * from TCHARACTER_CONTENT;


上篇: shutdown hook in java programming language 下篇: First Blog