Oracle筆記之修改表字段型別
阿新 • • 發佈:2018-12-15
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;