忍者ブログ

unmo blog

いろいろメモ書き・・・かな。 何でもありな感じ。 ※メインがU-NEXTになってるので、ジャンル、サブジャンルを変更。

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

テーブルの最後ではなく途中に列を追加する方法(oracle)


無くなると(無くならないか)嫌なので、記載しておきます。

原文はこちら↓
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行が選択されました。
PR

カレンダー

08 2024/09 10
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

フリーエリア

最新コメント

プロフィール

HN:
unmo
性別:
非公開

バーコード

ブログ内検索

P R