Oracle笔记之修改表字段类型

作者: smileNicky | 来源:发表于2018-10-14 12:15 被阅读9次

    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;
    

    相关文章

      网友评论

        本文标题:Oracle笔记之修改表字段类型

        本文链接:https://www.haomeiwen.com/subject/jbuzaftx.html