项目经验--orace 字段类型变更
2016-05-21 21:21
239 查看
项目实际运行中,偶尔会遇到表字段类型定义不合理的现象,此时不得不考虑编写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字段存在其他约束,请务必重新创建约束。
分析,以表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字段存在其他约束,请务必重新创建约束。
相关文章推荐
- flume版本的选择
- MySQL监控
- git bisect快速定位版本的错误
- html--图片和文字一行时,中间上下对齐
- MySql中数据库存储过程与触发器案例
- GitHub上最火的Android开源项目整理
- STL 简单 queue 的实现
- 有关Android View 绘制流程 & 自定义View
- WorkTimer - Swift
- OpenCV实践之路——人脸识别之三识别自己的脸
- cplus学习
- Ubuntu make 降级方法
- GeekBand c++學習筆記之二(帶指針的class中的必須要學的-Big Three法則)
- git,github和sourcetree的简单使用
- [静态指针] 约瑟夫问题
- 计算机网络
- HDU 4717 三分
- 31. Next Permutation
- 根据节点解析xml
- zabbix3.0安装部署文档