改變表中非空欄位的型別

mengzhaoliang發表於2008-11-28

改變表中非空欄位的型別

在資料庫中,經常因為專案開發前期資料庫表設計不合理,在系統執行試執行期間,表的欄位不滿足資料的需要,需要改變表欄位的型別。如欄位number(7,2)需要改變成varchar2(50),資料會有些不一樣(如:12.00的資料會變成 12 )。如果表中欄位存在資料,則不能更改。為了成功更改,需要清空該欄位的資料,需要在表中增加一個臨時的欄位,用來存放需要修改欄位型別的資料。
比如:把test表的FORMATION_NUM_TEMP欄位  number(7,2)型別改成varchar2(50)


--1先在test表增加一個臨時欄位
alter table test add (FORMATION_NUM_TEMP number(7,2));
comment on column test.formation_num_temp is '臨時欄位';

--2把需要修改欄位型別的欄位資料存放到臨時欄位中
update test t set t.formation_num_temp=t.formation_num;
commit;

--3清空formation_num欄位的資料,這樣則可以改變該欄位的型別了
Update test t Set  t.formation_num =null;
commit;

--4改變該欄位的型別
alter table test modify formation_num varchar2(50);

--5把臨時欄位的資料放回原來的欄位中,資料會有些不一樣(如:12.00的資料會變成 12 )
Update test t Set t.formation_num =t.formation_num_temp;
Commit;


--6刪除臨時欄位
alter table test  drop column formation_num_temp;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12778571/viewspace-503901/,如需轉載,請註明出處,否則將追究法律責任。

相關文章