- PR -

oracleのalterコマンドのことで悩んでます。

1
投稿者投稿内容
もんが〜
会議室デビュー日: 2005/08/03
投稿数: 6
投稿日時: 2005-09-22 10:43
oracleのalterコマンドのことで悩んでます。

alterコマンドを発行してテーブルに項目列を追加した場合、
テーブルレイアウトの一番下に追加されてしまいます。

発行したコマンドは以下の通りです。
▽----------------------------------------▽
ALTER TABLE テーブル名 ADD 列名 NUMBER(1);
△----------------------------------------△

希望としては任意の箇所に項目(列)が追加できればと
思っています。

参考書などを調べてみたのですが見つかりませんでした。
どなかたオチカラを貸していただけませんか?

すみませんが宜しくお願いしますm(_ _)m
Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2005-09-22 11:39
「SQL クイックリファレンス」(オライリー・ジャパン)とネットで調べてみた限りでは、残念ながら追加される列の位置を指定する方法はありません。
(蛇足: この本に載っているのは Oracle 8i 時代の情報ですので、より新しい版ではできるかもしれません。)

ご参考まで: MySQL にはこの機能がありますが、列の位置が問題になるのは人間がテーブルスキーマを確認する場合だけだと思います。
検索、挿入、更新、削除等の処理に影響はないので、気にしないようにする(もしくはテーブルスキーマをできる限り変更しないで済むように設計する)ことをお勧めします。

# 悪魔の囁き: 列の順が気になって気になって幾夜も眠れない日々が続くという場合は、
# データのバックアップをとった後、テーブルを削除して新しいスキーマで
# 作り直してからリストアする方法もあります。
# ご自分の責任でお試しください。
# (私自身はこのトラブルを体験したことはありませんが、スキーマを変更したら前の
# データからリストアできなくなったという報告をネット上で見たことがあります。
# 一体何がどうしてなのかは報告者の方に確認していませんが。)
いーた
大ベテラン
会議室デビュー日: 2004/07/12
投稿数: 154
お住まい・勤務地: 東京
投稿日時: 2005-09-22 11:43
残念ですが、Oracleでは実現できません。

項目の並び順に依存した設計や開発をするのは避けるべきだと考えますが、どうしても任意の並び順に変更したいのであれば
・VIEWを作成する
・別テーブルをCREATE後、元のテーブルからデータを移行して最後にRENAME
という方法があります。
もんが〜
会議室デビュー日: 2005/08/03
投稿数: 6
投稿日時: 2005-09-22 11:48
Gioさん、いーたさん
ご意見どうもです。

Alterコマンドでは列の順番を指定することが
できないことがわかっただけでも、すごく助かりました。
ご両人のおかげで明日からぐっすり眠れそうです。
本当にありがとうございましたm(_ _)m

以上です

1

スキルアップ/キャリアアップ(JOB@IT)