餃子を食べるとき、何をつけますか?

位置を指定して、フィールドを追加する方法をがわかりません。

ALTER TABLE [既存のテーブル名]
ADD [新しいフィールド名] VARCHAR(100)
AFTER [既存のフィールド名];

上記のような方法でできませんでした。

ちなみにSQLServer2000がインストールされた環境で、クエリアナライザで実行しました。

よろしくお願いいたします。

A 回答 (2件)

私も、以前に同様の内容を調べたことがあるのですが、SQL文による位置の指定方法は見つかりませんでした。



SQL文以外の方法としては、下記のような方法が考えられます。

■方法1■
現テーブルのデータをエクスポート(CSV形式等)
 ↓
(新テーブルを現テーブルと同名にしたい場合、このタイミングで現テーブル削除)
 ↓
希望レイアウトで新テーブル作成
 ↓
新テーブルにデータをインポート

■方法2■
現テーブルをリネーム
 ↓
希望レイアウトで新テーブル作成
 ↓
INSERT~SELECT文で現テーブルから新テーブルにデータコピー
 ↓
現テーブル削除

■方法3■
EnterpriseManager(7以降?)のGUI操作により、希望位置に列追加

■方法4■
VIEW定義により代替

ざっくりした説明ですので、補足説明が必要でしたらおっしゃってください。

また、他のよい方法をご存知の方がいたら、ぜひ知りたいです..

この回答への補足

回答ありがとうございます。

VB6のソースコード上から実行したかったので、
とりあえず、■方法2■でやってみました。

ちなみにトランザクションをかけた状態で、

新テーブルを作成

データコピー

現テーブル削除

新テーブルリネーム

だと実行時エラーが発生してしまいました。(分散トランザクションがどうとか...)

テーブルのリネームは最初にやらないとまずいのでしょうか。それとも、他の問題でしょうか。

あと、■方法4■はどういうことでしょうか。

お暇でしたらよろしくお願いします。

補足日時:2004/06/25 13:35
    • good
    • 0

遅くなりすみません。



■方法2■ではエラーとなってしまったとのことですが、すみませんがちょっと原因はわからないです。トランザクション関連のエラーのようですね。エラーメッセージなど、詳しく教えていただければ調べられるかもしれません。

■方法4■ですが、ビューの使用方法はご存知でしょうか?
例を挙げて説明します。

pk, clm1,clm2 の3列をもつテーブルTbl1(既存。キーはpk)
 ↓
pk, clmAを持つ新テーブルTbl2(新規作成。キーはpk、clmAは追加したい項目)
 ↓
pk, clm1, clmA, clm2 の順のレイアウトでビューView1を定義
 CREATE VIEW View1
AS
SELECT Tbl1.pk, Tbl1.clm1, Tbl2.clmA, Tbl1.clm2
FROM Tbl1, Tbl2
WHERE Tbl1.PK = Tbl2.PK

 ↓
View1に対してSELECT等を実行することで、列を追加したTbl1に対してSELECT等を行っているかのように見せることができる。

下手な説明ですみません。
さらに補足が必要でしたらおっしゃって下さい。
    • good
    • 0
この回答へのお礼

返答がだいぶ遅くなってしまい、すみません。

結局、■方法2■でうまくいったので、使用させてもらうことにしました。
エラーの原因は、ソースコードへのSQL埋め込み時に ";" で区切って多くのSQL文を実行しようとしていたため、エラーとなっていたみたいです。一文ずつ実行したら、とりあえずうまくいきました。

ビューの説明はわかりやすかったです。
ありがとうございました。

お礼日時:2004/07/12 21:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


おすすめ情報