• ベストアンサー

位置を指定してフィールドを追加する

位置を指定して、フィールドを追加する方法をがわかりません。 ALTER TABLE [既存のテーブル名] ADD [新しいフィールド名] VARCHAR(100) AFTER [既存のフィールド名]; 上記のような方法でできませんでした。 ちなみにSQLServer2000がインストールされた環境で、クエリアナライザで実行しました。 よろしくお願いいたします。

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

  • ベストアンサー
回答No.1

私も、以前に同様の内容を調べたことがあるのですが、SQL文による位置の指定方法は見つかりませんでした。 SQL文以外の方法としては、下記のような方法が考えられます。 ■方法1■ 現テーブルのデータをエクスポート(CSV形式等)  ↓ (新テーブルを現テーブルと同名にしたい場合、このタイミングで現テーブル削除)  ↓ 希望レイアウトで新テーブル作成  ↓ 新テーブルにデータをインポート ■方法2■ 現テーブルをリネーム  ↓ 希望レイアウトで新テーブル作成  ↓ INSERT~SELECT文で現テーブルから新テーブルにデータコピー  ↓ 現テーブル削除 ■方法3■ EnterpriseManager(7以降?)のGUI操作により、希望位置に列追加 ■方法4■ VIEW定義により代替 ざっくりした説明ですので、補足説明が必要でしたらおっしゃってください。 また、他のよい方法をご存知の方がいたら、ぜひ知りたいです..

rrr-1
質問者

補足

回答ありがとうございます。 VB6のソースコード上から実行したかったので、 とりあえず、■方法2■でやってみました。 ちなみにトランザクションをかけた状態で、 新テーブルを作成 ↓ データコピー ↓ 現テーブル削除 ↓ 新テーブルリネーム だと実行時エラーが発生してしまいました。(分散トランザクションがどうとか...) テーブルのリネームは最初にやらないとまずいのでしょうか。それとも、他の問題でしょうか。 あと、■方法4■はどういうことでしょうか。 お暇でしたらよろしくお願いします。

その他の回答 (1)

回答No.2

遅くなりすみません。 ■方法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等を行っているかのように見せることができる。 下手な説明ですみません。 さらに補足が必要でしたらおっしゃって下さい。

rrr-1
質問者

お礼

返答がだいぶ遅くなってしまい、すみません。 結局、■方法2■でうまくいったので、使用させてもらうことにしました。 エラーの原因は、ソースコードへのSQL埋め込み時に ";" で区切って多くのSQL文を実行しようとしていたため、エラーとなっていたみたいです。一文ずつ実行したら、とりあえずうまくいきました。 ビューの説明はわかりやすかったです。 ありがとうございました。

関連するQ&A