在oracle修改user表欄位name類型時遇到報錯:“ORA-01439:要更改數據類型,則要修改的列必須為空”,是因為要修改欄位的新類型和原來的類型不相容。 如果要修改的欄位數據為空時,則不會報這種類型的錯誤,可以進行欄位類型的修改。 alter table user modify (name ...
在oracle修改user表欄位name類型時遇到報錯:“ORA-01439:要更改數據類型,則要修改的列必須為空”,是因為要修改欄位的新類型和原來的類型不相容。
如果要修改的欄位數據為空時,則不會報這種類型的錯誤,可以進行欄位類型的修改。
alter table user modify (name varchar2(20));
要修改欄位的新類型和原來的類型不相容時,可以通過如下方式解決該問題:
1、修改原欄位名name為臨時欄位name_new;
alter table user rename column name to name_new ;
2、添加一個新欄位名稱和原來欄位名相同,name,類型為要修改的新類型;
alter table user add(name varcher2(50));
3、把臨時欄位name_new的數據更新到新添加的欄位name中;
update user set name = trim(name_new);
4、刪除臨時欄位name_new;
alter table user drop column name_new ;