• 締切済み

カラム位置変更

Orcle SQL DeveloperでColumnsタブのEdit画面で カラム位置を変更するボタンがあるのですが、 Dsiabledになっているため使えません。 昔のRaptor時代は使えたような気がするのですが、 使えている方はいらっしゃいますか? また、この機能による内部的に発行しているSQL文とは どのようなものなのでしょうか。 おそらくカラム位置を変更するOracle10g専用のクエリー があると思われるのですが…もし、知っていたら教えて下さい。 よろしくお願いします。

みんなの回答

回答No.2

オラクルからカラムの順序を変更する機能を 積極的にリリースするとは残念ながら あまり考えられません。 といいますのもオラクルとしては 表に対してアクセスする場合に select * from table_name; という方法はあまり推奨してないからです。 オラクル(に限らずどこのDBベンダでもそうだと思いますが)が推奨しているのはおそらく select col1,col2,col3,col4 from table_name; という方法です。 これであればSELECT文を select col1,col3,col2,col4 from table_name; と書き直してやるだけでcol2とcol3が入れ替わった ことになります。 なぜ、*でのSELECTを推奨していないかというと テーブルのカラム追加、削除を行った場合に SQL文まで書き直す必要があるからです。 *で記述すると「col1からcol4の4つを取ってきて、その 2番目にcol2が3番目にcol3が入っている」という前提で SELECT文を実行する必要があるのでテーブルのカラムの順序がcol2とcol3で入れ替わったり、 col5が追加されたときなどに従来のSELECT文では対応できななります。 それに対して select col1,col3,col2,col4 from table_name; などとSQLを記述しておくとカラムの順序が入れ替わろうが、カラムが追加されようが カラム名やテーブル名が変わらない限りはSQL文を書き直す必要がありません。 同様の理由でINSERT文も insert into table_name values (...); ではなく、 insert into table_name (col1,col2) values (...); という記述が推奨されています。

KaZtoYou
質問者

お礼

whiteline507さんの仰りたい事は良く分かります。 ありがとう御座いました。

回答No.1

Developerについては分からないのですが 少なくともテーブル内カラム順序を変更するSQL文はありません。 Developerなどでもし使えたとしても 内部的に置き換えた後にSQL文としてテーブルに格納、参照しているかと思います。 どうしてもカラムの順序を入れ替えたいのであれば create table bbb as select col2,col1 from aaa; drop table aaa; alter table bbb rename to aaa; などといったん別テーブルに順番を置き換えて出力したあとに元のテーブル名に戻すしかないと思います。 (注:一時的に倍の容量が必要になります。 また、インデックスなども張りなおす必要があります)

KaZtoYou
質問者

お礼

ご回答有り難う御座います。 カラム順序を変更するのにそのような手順が必要なのは残念ですが、 Oracle SQL Developerにてその辺がインデックス再構築も含め 自動化されているのなら手軽にはなるんですけどね。 日本のOTNにもリリースされたようですが、相変わらず機能しません^^; もしかしたら、何か条件があるのかもしれませんね。 P.S Oracle SQL Developerを見て将来的にクエリー1つで行えるようにする方向性はあると期待しています。

関連するQ&A