由于业务的需要,我们需要将身高、体重修改为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;