场景:

修改数据库字段类型

执行的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;

 

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐