oracle 修改欄位類型的方法

來源:互聯網
上載者:User

要是沒有資料的話直接用以下語句即可

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 ;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.