Oracle 修改字段类型的方法

Oracle 修改字段类型的方法

今天公司因为业务需要,修要修改某个字段数据类型有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 tb_test  add permile_temp number;ITPUB个人空间+}oIm�^e S,['^ D%j
-- Add/modify columns
!ymG-H~{o,A0 alter table  tb_test  modify PERMILE null;
;M.C/^+f.N9[0 update  tb_test  set permile_temp=permile,permile=null;
*?(tbqFe0 commit;ITPUB个人空间pbZK P%v9V4nzF
alter table  tb_test  modify permile number(5,2);ITPUB个人空间*SJ{)q2t5eR
update  tb_test  set permile=permile_temp,permile_temp=null;
(w%d!Wb9/O0 commit;ITPUB个人空间Dgtsy-_2L%]
alter table  tb_test  drop column permile_temp;ITPUB个人空间^aRq|0P&R
alter table  tb_test  modify PERMILE not null;
8H6UI4m zz5L*D/3Z0 select * from  tb_test ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值