こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

列の追加について

テーブルへの列の追加についてご教授をお願いいたします。

今、テーブルの列が以下のようにあるとします。

■追加前の列
A B C

この列に、Dという列を追加するときに、

■追加後の列
A B C D

にすることはできます。

このDを最後尾ではなく、BとCの間に挿入させるには
どうしたらよろしいのでしょうか。

テーブルを削除し、定義をしなおさなければならない
のでしょうか?そうすると、テーブルのデータを
バックアップし、列を追加したものに対して、
データ修正・挿入という作業も発生します。

効率的に進められる方法について教えて頂けないでしょうか。

投稿日時 - 2010-02-07 12:26:02

QNo.5656118

困ってます

質問者が選んだベストアンサー

一般的には以下のような方法をとります。

1. 作業表を作成する

create table temp_table (A, B, D, C);

2. 元表のデータを作業表に挿入する

insert into temp_table (A, B, D, C)
select A, B, null, C from orig_table;

3. 元表を削除する

drop table orig_table;

4. 作業表をリネームする

rename temp_table to orig_table;

5. 制約等を追加する

alter table orig_table ...;

# 要件に合わせて使用するとよいでしょう。

投稿日時 - 2010-02-07 13:21:29

ANo.3

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

「RDB」である以上、列も行も順にこだわるのは、あまり意味が無いのでは?

select文でA B C Dの順に取得すれば良いと思います。

投稿日時 - 2010-02-07 12:29:52

ANo.1

列の追加はtableの最後に行われるので、列間に追加したい場合は
再定義が必要です。

投稿日時 - 2010-02-07 12:28:38

あなたにオススメの質問