a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 107|回复: 0

[综合] Oracle辅导:如何oracle修改字段类型

[复制链接]
发表于 2012-8-4 13:54:49 | 显示全部楼层 |阅读模式
 因为营业需要,修要改削某个字段数据类型有number(5),变为number(5,2)型   若是没稀有据的话直接用以下语句即可4 A& s! B# _# {$ A4 P  d0 j
  alter   table tb_test modify permile number(5,2);" F1 ?! Q$ _  S- u
  可是稀有据的话 就不能用膳缦沔体例了,- G) [9 Y. |" m% M( N- \. @
  alter table tb_test add permile_temp number(5,2)- O: @1 X5 Y7 x
  update tb_test set permile_temp=permile;  J$ U) y' l9 m; d
  alter table drop column permile;. }% A0 h2 _3 _9 m2 }
  alter table test rename column permile_temp to permile;# m& I* T6 _+ w7 I
  这种体例会使列名发生转变,而且字段挨次增添 有可能发生行迁移,对应用轨范会发生影响
, X5 d+ o7 f9 n  以下体例是斗劲好的体例7 Q' A0 I' {' P7 g2 }
  不用使列名发生转变 也不会发生表迁移,但这个有个错误谬误是表要更新两次
+ D  ?! l! b3 [" O  如不美观数据量较年夜的话 发生的undo和redo更多 ,前提也是要停机做
) I3 s% q1 _9 s3 X  若是不竭机的话 ,也可以采用在线重界说体例来做
* }4 u2 z3 s9 n  以下是剧本:
/ G/ \0 R- P  s* k( K$ t  alter table tb_test add permile_temp number;$ v1 Z- z- H; m+ q' p
  Add/modify columns
3 t3 K, K' V$ u1 ]* P  alter table tb_test modify PERMILE null;
# @* z& X! _0 R& k9 j0 H& X; x8 `  update tb_test set permile_temp=permile,permile=null;
) h. ?/ V, [: n  a' p  commit;5 x; x# n7 _# d/ k
  alter table tb_test modify permile number(5,2);5 }4 z0 B3 X, g6 Q+ z  X$ q$ V
  update tb_test set permile=permile_temp,permile_temp=null;% h$ }. e2 X2 T& g
  commit;8 i7 @# m( ~3 Y7 T4 I5 D% G4 C9 Y( w2 U
  alter table tb_test drop column permile_temp;
! E) Z- n  L' N% ?( i  alter table tb_test modify PERMILE not null;
; R$ |1 K3 H" S7 d% ?7 s3 B  select * from tb_test ;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-21 16:26 , Processed in 0.998545 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表