1. 程式人生 > >Oracle筆記之修改表字段型別

Oracle筆記之修改表字段型別

Mysql對於有資料和沒資料的表字段型別都可以隨意修改,不過oracle就不一樣。 假如表A有個欄位a,本來為number型別,然後我們想修改為varchar2型別。 (1)欄位a沒資料的情況,改為varchar2(10),可以如下:

alter table A modify (a varchar2(10));

(2)欄位有資料的情況,執行上面sql會提示

“ORA-01439:要更改資料型別,則要修改的列必須為空”

這時,我們可以換種思路來修改,思路是這樣的:先建立一個臨時的欄位,進行資料備份

--新增一個varchar2型別的臨時欄位
alter table A add new_temp varchar2(10);
--備份一下欄位a
update A set new_temp = a;
--事務提交
commit;
--清空欄位a資料
update A set a = '';
--事務提交
commit;
--這時a欄位是沒資料的
alter table A modify a varchar2(10);
--將臨時欄位的資料搬過來
update A set a = new_temp;
--事務提交
commit;
--drop一下臨時欄位
alter table appr_control_info_ex drop column new_temp;