無くなると(無くならないか)嫌なので、記載しておきます。
原文はこちら↓
http://otn.oracle.co.jp/otn_pl/otn_tool/code_detail?n_code_id=1774
[Tips# 1774]
本来RDBでは列の並びを気にしない、ってのが基本ですが、
PRIMARY KEYは先頭に、タイムスタンプなどの管理列は後ろに統一
ってお客様が多いので。
SQL> create table table1
2 (
3 col1 varchar2(10) not null
4 , col2 varchar2(10) not null
5 , constraint pk_table1 primary key(col1)
5 ) ;
表が作成されました。
SQL> insert into table1(col1, col2) values
('AAAAAAAAAA', 'BBBBBBBBB') ;
1行が作成されました。
SQL> commit ;
コミットが完了しました。
SQL> -- と元表があったとして、col1の次にnum1を追加したい。
SQL> -- テーブルの途中に直接列を追加はできないのでいったんワークテー
ブルを用意。
SQL> create table temp_table
2 (
3 col1 varchar2(10) not null
4 , num1 number(5) not null
5 , col2 varchar2(10) not null
6 ) ;
表が作成されました。
SQL> insert into temp_table(col1, num1, col2) select col1, 1 as
num1, col2 from table1 ;
1行が作成されました。
SQL> commit ;
コミットが完了しました。
SQL> drop table table1 purge ;
表が削除されました。
SQL> rename temp_table to table1 ;
表名が変更されました。
SQL> -- primary key などを追加。
SQL> alter table table1 add constraint pk_table1 primary key(col1) ;
表が変更されました。
SQL> desc table1
名前 NULL? 型
----------------------------------------- -------- -----------------
-
COL1 NOT NULL VARCHAR2(10)
NUM1 NOT NULL NUMBER(5)
COL2 NOT NULL VARCHAR2(10)
SQL> select col1, num1, col2 from table1 ;
COL1 NUM1 COL2
-------------------- ------------- --------------------
AAAAAAAAAA 1 BBBBBBBBB
1行が選択されました。