Oracle 如何修改表中字段顺序?

原文地址:http://blog.csdn.net/Ghohankawk/article/details/17221383


今天才遇到这个问题,看了很多资料,自己记录一下,以后学习看备用。

总结了一下,网上就是2种经典的方法。

首先说一下,你要明白为什么要改字段顺序?字段顺序是死的吗?需要改吗?用客户端工具,拖动一下不就好了吗?明白了这些,你再来看

粘贴过来看一下,

方法一:
--(1)备份目标表数据
create table 临时表 as select * from 目标表;
--(2)drop 目标表
drop table 目标表;
--(3)再重新按照要求的字段顺序建表;
create table 临时表 (col1,................coln);
--(4)之后用select将数据从临时表导回。
方法二:
--第1步 创建测试表
create table TEST (A VARCHAR2(10),B VARCHAR2(10),C VARCHAR2(10),D VARCHAR2(10));
--第2步 查询出表的id,注意:owner和object_name的值要大写
--DBA用户使用
select object_id from all_objects where owner='CHINAJFK' and object_name='TEST';--本例结果为52206
--表归属用户可以使用
select object_id from obj where object_name='TEST';--本例结果为52206
--第3步 通过id查出该表所有字段的顺序
select obj#,col#,name from sys.col$ where obj#=52206 order by col#;
--第4步 更新字段顺序,需要sys用户或是System用户 as sysdba登录,或是其他拥有sysdba权限的用户,但是这里的操作一定要小心。
--(1)更新目标字段的col#
update sys.col$ set col#=4 where obj#=52206 and name='A';
--(2)更新受影响字段的col#,自己根据情况自己组织语句
update sys.col$ set col#=col#-1 where obj#=52206 and name!='A';
--(3)提交
commit;
--第5步 重启Oralce服务
--第6部 检查是否生效
select obj#,col#,name from sys.col$ where obj#=52206 order by col#;
select * from chinajfk.test;

总的来说,第一种还是相对方便一点,只要你有oracle对那张表的删除,修改权限即可。
第二种,能在此基础上进行修改,应该是大家一般期待的那种,但是比较繁琐,需要有dba权限,以及重新启动服务才会生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值