Oracle 修改表字段类型 报错提示ORA-01439: 要更改数据类型, 则要修改的列必须为空
表tableA 原先的字段manuid为数字类型,现在需要修改成字符类型,
ALTER TABLE tableA MODIFY (manuid VARCHAR2(255));
直接执行报错:SQL 错误 [1439] [72000]: ORA-01439: 要更改数据类型, 则要修改的列必须为空
解决方法:
/*修改原字段名name为manuid_temp*/
alter table tableA rename column manuid to manuid_temp;
/*增加一个和原字段名同名的字段*/
alter table tableA add manuid VARCHAR2(255);
comment on column tableA.manuid is '供应商ID';
/*将原字段manuid_temp数据更新到增加的字段*/
update tableA set manuid=manuid_temp;
/*更新完,删除原字段name_tmp*/
alter table tableA drop column manuid_temp;
问题解决。