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