设为首页收藏本站
开启辅助访问

创星网络[分享知识 传递快乐]

 找回密码
 立即注册

QQ登录

只需一步,快速开始

用新浪微博登录

只需一步,快速搞定

搜索

oracle 修改字段类型的方法

2012-8-8 10:57| 发布者: cryinglily| 查看: 462| 评论: 0|原作者: luinstein

摘要: 因为业务需要,修要修改某个字段数据类型有number(5),变为number(5,2)型 要是没有数据的话直接用以下语句即可 alter table tb_test modify permile number(5,2);复制代码 但是有数据的话 就不能用上面方法了, alter t ...
因为业务需要,修要修改某个字段数据类型有number(5),变为number(5,2)型
  要是没有数据的话直接用以下语句即可
  1.   alter   table tb_test modify permile number(5,2);
复制代码

  但是有数据的话 就不能用上面方法了,
  1.   alter table tb_test add permile_temp number(5,2)
  2.   update tb_test set permile_temp=permile;
  3.   alter table drop column permile;
  4.   alter table test rename column permile_temp to permile;
复制代码

  这种方法会使列名发生变化,而且字段顺序增加 有可能发生行迁移,对应用程序会产生影响
  以下方法是比较好的方法
  不用使列名发生变化 也不会发生表迁移,但这个有个缺点是表要更新两次
  如果数据量较大的话 产生的undo和redo更多 ,前提也是要停机做
  要是不停机的话 ,也可以采用在线重定义方式来做
  以下是脚本:
  1. alter table tb_test add permile_temp number;
  2. Add/modify columns
  3. alter table tb_test modify PERMILE null;

  4. update tb_test set permile_temp=permile,permile=null;
  5. commit;
  6. alter table tb_test modify permile number(5,2);
  7. update tb_test set permile=permile_temp,permile_temp=null;
  8. commit;
  9. alter table tb_test drop column permile_temp;
  10. alter table tb_test modify PERMILE not null;
  11. select * from tb_test ;
复制代码



鲜花

握手

雷人

路过

鸡蛋

相关分类

QQ|Archiver|手机版|小黑屋|创星网络 ( 苏ICP备11027519号|网站地图  

GMT+8, 2025-9-10 14:54 , Processed in 0.060575 second(s), 17 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

返回顶部