我们使用alter table TableNM add NewField varchar2(10) 时,新增的字段NewField 会自动添加到所有字段的最后面,比如原来有:Field1、Field2、Field3,则查看库表结构字段顺序则是:Field1、Field2、Field3、NewField,而我现在想把新增的字段放在倒数第二位,使之顺序为:Field1、Field2、NewField 、Field3,又该如何才能实现?

解决方案 »

  1.   

    SQL> CREATE TABLE T_TABLE(NAME VARCHAR2(11),SEX CHAR(1),AGE NUMBER(3));
     
    Table created
     
    SQL> DESC T_TABLE
    Name Type         Nullable Default Comments 
    ---- ------------ -------- ------- -------- 
    NAME VARCHAR2(11) Y                         
    SEX  CHAR(1)      Y                         
    AGE  NUMBER(3)    Y                         
     
    SQL> 
    SQL> UPDATE SYS.COL$
      2  SET    COL# = DECODE(COL#, 2, 3, 2)
      3  WHERE  obj# = (SELECT OBJECT_ID
      4                 FROM   ALL_Objects
      5                 WHERE  object_name = 'T_TABLE'
      6                 AND    OWNER = 'SYS'
      7                 AND    SUBOBJECT_NAME IS NULL)
      8  AND  COL# > 1;
     
    2 rows updated
     
    SQL> COMMIT;
     
    Commit completeSQL> ALTER SYSTEM FLUSH SHARED_POOL;
     
    System altered
     
    SQL> DESC T_TABLE;
    Name Type         Nullable Default Comments 
    ---- ------------ -------- ------- -------- 
    NAME VARCHAR2(11) Y                         
    AGE  NUMBER(3)    Y                         
    SEX  CHAR(1)      Y                         
     
    SQL> select column_name,column_id from user_tab_cols where table_name='T_TABLE';
     
    COLUMN_NAME                     COLUMN_ID
    ------------------------------ ----------
    NAME                                    1
    SEX                                     3
    AGE                                     2
     我也是从论坛里学来的。