在ORACLE數(shù)據(jù)庫表中,有時(shí)會(huì)有需要更改數(shù)據(jù)庫表中字段類型的情況,比如由NUMBER(5)改為
VARCHAR(50)...,這時(shí)就要視情況來更改了,如果原數(shù)據(jù)庫表中沒有數(shù)據(jù),則可以直接使用:

但是有數(shù)據(jù)的話 就不能用上面方法了,








這種方法會(huì)使列名發(fā)生變化,而且字段順序增加 有可能發(fā)生行遷移,對應(yīng)用程序會(huì)產(chǎn)生影響
以下方法是比較好的方法
不用使列名發(fā)生變化 也不會(huì)發(fā)生表遷移,但這個(gè)有個(gè)缺點(diǎn)是表要更新兩次
如果數(shù)據(jù)量較大的話 產(chǎn)生的undo和redo更多 ,前提也是要停機(jī)做
要是不停機(jī)的話 ,也可以采用在線重定義方式來做
以下是腳本:






update test set name=name_temp,name_temp=null;

commit;

alter table test drop column name_temp;



這樣就不會(huì)出現(xiàn)上述的問題了.