好像没办法 
重建吧
create table t2 as select col1,col2 from t;
drop table t;
alter table rename t2 to t;

解决方案 »

  1.   

    楼主想这样做的意义在哪?
    对表select、insert、update都可以通过列名来确定顺序
      

  2.   

    可是我记得好像是有办法的,就是在csdn上看到过一个贴的。很久以前看了忘了,当时也觉得无所谓。但是现在有些表如果加列都往后加,就显得表结构比较混乱,的确不影响使用。还是统计的结构规整比较好,继续求助。明天中午还没有答案就结贴了。
      

  3.   

    偶没试过,每次都是添加在最后的位置上
    如果没有数据,可以考虑重建表
    或者
    create table xx from xx 应该也可以
      

  4.   

    没有意义,, 查询的顺序变掉不就好了, 不行就使用view来实现吧..
      

  5.   

    多谢各位意见,。。
    不过,重建表代价极大。是系统的一个基表来着,我查了一下大约60几个报表外键关联它,还有它也关联其他的10个左右表。至于pl/sql语句上的使用就没法说了,这个反正名字一样就可以。其实我想改这个列顺序,的确对使用没具体帮助,就是希望能把表结构弄清晰一点。
    如一个记录起息日在最前,上市日在中间,到期日在后面,然后就弄得很被动。
      

  6.   

    把所有constraint disable然后ctasdrop 原来的rename 新建的.constraint enable
      

  7.   

    看来也只好如tony所说 constraint disable了
      

  8.   

    除使用视图之外,任何达到搂主目的的办法本质上都是重建表。使用create table xx as select a,b,c from tab并不需要付出多大的代价,除非你的表中使用了大量的索引之类的东西,即使这样也不复杂。
      

  9.   

    9i下可以通过使用dbms_redefinition包来实现重定义字段的顺序
    需要确定表是否可以做online redefinination,表需要主键等