Oracle FAQ (ORACLE でテーブルの列名と順序を変更する方法)

WBOY
リリース: 2016-06-21 09:07:46
オリジナル
1180 人が閲覧しました

オラクル

転載の場合は出典を明記してください!
ORACLE を使用したことのある人なら誰でも、ORACLE での列名とテーブルの順序の変更が非常に面倒な作業であることを知っています。そのための簡単な方法を次に示します。

SQL> select object_id from all_objects where owner='SCOTT' and object_name='T1';

OBJECT_ID
----------
6067
SQL> select obj#,col#,name from sys .col$ where obj#=6067;

OBJ# COL#
---------- ----------
NAME
----------- --------------------------------------------------
6067 1
ID

6067 2
NAME

SQL> update sys.col$ set name='NEW_ID' ,col#=3 where obj#=6067 and name='ID';

1 行が更新されました。

SQL> update sys.col$ set name='MY_NAME',col#=1 where obj#=6067 and name='NAME';

1 行が更新されました。

SQL> update sys.col$ setcol#= 2 obj#=6067 およびcol#=3;

1 行が更新されました。

SQL> commit;

コミットが完了しました。

SQL> select * from scott.t1;

ID NAME
----- - ---- --------------------
3 cheng
2 yong
1 xin
2 gototop
1 topcio
2 yongxin
1 cyx

7 rows選択された .
SQL> 即時シャットダウン
データベースが閉じられました。
データベースがマウント解除されました。
ORACLE インスタンスがシャットダウンされました。

システム グローバル領域の合計 128159368 バイト
固定サイズ 732808 バイト
可変サイズ 11744051 2 tes
データベースバッファー 8388608 バイト
やり直しバッファー 1597440 バイト
データベースがマウントされました。
データベースが開きました。
SQL> select * from scott.t1;

MY_NAME NEW_ID
-------- ------------- ----------
cheng 3
yong 2
xin 1
gototop 2
topcio 1
yongxin 2
cyx 1

7 行が選択されました。

これまでテーブルに SCOTT.T1 を配置しました。列名と順序はすべて指定されています。列名を変更せずに順序のみを変更したい場合は、一度に UPDATE を実行するだけです。 SYS.COL$ の COL# と NAME が両方とも UNIQUE であるためです。

この方法には一定のリスクがありますが、特に大きなテーブルでは効果が明らかですが、一般的な方法を使用すると、より多くのストレージ領域、ロールバックセグメント、時間のオーバーヘッドが必要になります。



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート