orace 字段类型变更

来源:互联网 发布:淘宝店页面背景图 编辑:程序博客网 时间:2024/04/29 05:19

        项目实际运行中,偶尔会遇到表字段类型定义不合理的现象,此时不得不考虑编写sql脚本,修改表中的字段类型。字段类型定义不合理的原因有各种,此处不做讨论,仅总结下如何实现字段类型的变更。

     

        分析,以表t_userinfo的id为例,表中id类型为number(10),当前出于某种需要,id必须变更为varchar2(100)类型:

     【表中该列不存在数据】

                   可以直接执行:altet table t_userinfo modify id varchar2(100);

     【表中该列存在数据】

                  若直接执行1)中的sql,则会提示异常ora-01439:要更改数据类型,则必须要修改的列为空。

                   此时,建议按一下步骤去变更字段类型:

                          1)新增一个varchar2(100)的字段,id_new;

                          2)将表中id字段的值,update到id_new字段

                                PS:若数据量较大,则请分批更新,分批commit,否则sql会存在性能问题

                          3)drop掉原来的id字段;

                          4)将id_new字段重命名为id;

                          5)如果id字段存在其他约束,请务必重新创建约束。                                     


1 0