如何修改Oracle数据表的栏位顺序

---- 直接正题,不废话!

 

 

通过以下SQL查询出列名的ID,修改ID字段即可

SQL>

SELECT obj#,col#,segcol#,intcol#,name FROM sys.col$
WHERE obj#=
 (SELECT object_id FROM all_objects WHERE owner='MES' And Object_Type='TABLE' And object_name ='TABLENAME')
ORDER BY COL#;

注:此处必须有sys权限方可

2018-04-27update:需要同时修改这三个栏位:col#,segcol#,intcol#

2021-06-11update:RAC环境切勿使用该方法,我被坑的极惨……

 

============================== 方法 2 ==============================

=========================

此处借鉴网友方法,也挺不错的:http://www.myexception.cn/oracle-management/58267.html其实跟删掉数据重新建立一样,稍微好点~

alter table add column改变增加列的位置顺序
在oracel中用alter   table   add   column增加的列总是在表的最后一列上,我想自已改变这个列的位置,比如增加在第3列的后面这样,请高手指教

------解决方案--------------------
好像不行吧,除非删掉重建 
------解决方案--------------------
重建表吧 否则不行 
------解决方案--------------------
那样做是不行的 
------解决方案--------------------
列的位置很重要吗? 
------解决方案--------------------
列的位置建好后没法改变。 
------解决方案--------------------
把数据备份好,重建表,再把数据恢复回来 是 最简单的办法。。。。 
------解决方案--------------------
可以用来选择的方法是: 
假设你的表为 table1 
字段列表为: 
f1 varchar2(10) 
f2 varchar2(20) 
f3 number(3) 

如果你想把表变成 

f1 varchar2(10) 
f_new varchar2(20) 
f2 varchar2(20) 
f3 number(3) 

那么你需要这样创建一个表: 
create table table2 as select f1, '11 ' as f_new,f2,f3 from table1; 
这样修正这个表: 
alter table table2 modify (f_new varchar2(20)) 
删掉原来的表: 
drop table table1; 
修改当前的表名: 
rename table2 to table1; 

ok. 

------解决方案--------------------
还需要手工删掉 f_new中的数据: 
update table1 set f_new=null; 

------解决方案--------------------
重建表。。。别想太麻烦了

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值