要是沒有資料的話直接用以下語句即可
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個人空間4] H$/H-c3YF
-- Add/modify columns ITPUB個人空間9W gQ%?T.Y
alter table tb_test modify PERMILE null;ITPUB個人空間k8DR3IfU"P$p
update tb_test set permile_temp=permile,permile=null;
&`rS,nL8A0commit;ITPUB個人空間5N8U,gh+S"c7^ m
alter table tb_test modify permile number(5,2);ITPUB個人空間W,nq&a%{ kt
update tb_test set permile=permile_temp,permile_temp=null;ITPUB個人空間+AW"E,otv,|tDB4m
commit;
1lUT3g(k0alter table tb_test drop column permile_temp;
7V r3z&|:t'Zz#_Ur0alter table tb_test modify PERMILE not null;
~/e7B|fI%o5_J0select * from tb_test ;