ORA-01439: 要更改数据类型, 则要修改的列必须为空
--ALTER TABLE SMART_CHOOSE_FACTOR MODIFY (LEFT_RANGE VARCHAR2(20));alter table SMART_CHOOSE_FACTOR rename column RIGHT_RANGE to RIGHT_RANGE_TMP;alter table SMART_CHOOSE_FACTOR add RIGHT_RANGE varchar2
·
场景:
修改数据库字段类型
执行的SQL:
ALTER TABLE TABLE_NAME MODIFY (RIGHT_RANGE VARCHAR2(20));报错:
ORA-01439:要更改数据类型,则要修改的列必须为空
原因描述:
是因为要修改字段的新类型和原来的类型不兼容
如果要修改的字段数据为空时,则不会报这种类型的错误,可以进行字段类型的修改
解决方案:(间接新建字段来转移)
修改原字段名RIGHT_RANGE为RIGHT_RANGE_TMP
alter table TABLE_NAME rename column RIGHT_RANGE to RIGHT_RANGE_TMP;增加一个和原字段名同名的字段RIGHT_RANGE
alter table TABLE_NAME add RIGHT_RANGE varchar2(20);将原字段RIGHT_RANGE_TMP数据更新到增加的字段RIGHT_RANGE
update TABLE_NAME set RIGHT_RANGE=trim(RIGHT_RANGE_TMP);更新完,删除原字段RIGHT_RANGE_TMP
alter table TABLE_NAME drop column RIGHT_RANGE_TMP;
更多推荐


所有评论(0)