• ベストアンサー
  • 暇なときにでも

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

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

共感・応援の気持ちを伝えよう!

  • SQL Server
  • 回答数2
  • 閲覧数6875
  • ありがとう数15

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

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

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • SQLでフィールドの順番を変更したい

    お世話になっております。 ORACLEを使用しております。 既存のテーブルに新しいフィールドをSQL文にて ALTER TABLE TEST_MST ADD TEST_CD VARCHAR2(2); と言う風に、SQL*PLUSにて追加いたしました。 これを参照しますと、 追加したフィールドがテーブルの一番最後のフィールドに 追加されているのですが、 フィールドの順番を変更したいと考えております。 SQL文にて何か方法はございませんでしょうか。 ご返答を宜しくお願い致します。

  • テーブルのフィールドにNot null制約を付けたい

    お世話になります。 既存テーブルにフィールドを追加する方法は わかっているのですが、その追加したフィールドに not null制約を付けるにはどのようなコマンドを 実行する必要があるのでしょうか。 ↓のコマンドには制約をつけるオプションはないですよね。。 ALTER TABLE テーブル名 ADD (カラム名 カラム定義) よろしくお願いします。

  • テーブルの指定した位置に列を追加する

    ALTER TABLE文(?)を使って、既存のテーブルの指定した位置に 新しい列を追加する方法はあるのでしょうか? (DB:Oracle 10g) よろしくお願いします。

  • MySQLで先頭にカラムを追加

    宜しくお願いします。 MySQLで新たにカラムを追加する場合、 alter table テーブル名 add column 新カラム名 after 既存のカラム名; という形で追加すると思うのですが、これだと『after 既存のカラム名』となるので、そのカラムの次に入ってしまうと思います。なので、これだとどうしても2番目に来てしまいます。新たに1番目にカラムを追加する事は出来ないのでしょうか?

    • ベストアンサー
    • MySQL
  • 希望の位置へフィールドを追加するには?

    希望の位置へフィールドを追加するには? WinXP、Access2003を使っております。 テーブルに希望の位置へフィールドを新たに追加する為にはどうすれば良いでしょうか? テーブル名:顧客データ フィールド: 名称(メモ型) 住所(テキスト型) 担当営業(テキスト型) 取扱品目(メモ型) 備考(テキスト型) 1.メモ型をテキスト型へ変更するのが目的の為、   既存の「名称」、「取扱品目」のフィールド名の最後に「2」を追記します。 2.名称と取扱品目のテキスト型のフィールドを新たに追加します。 Private Subコマンド1_Click() Application.CurrentDb.TableDefs("顧客データ").Fileds("名称").Name="名称2" Application.CurrentDb.TableDefs("顧客データ").Fileds("取扱品目").Name="取扱品目2" Dim db As Database Set db = CurrentDb db.Execute "ALTER TABLE 顧客データ ADD COLUMN 名称 TEXT(255)" db.Execute "ALTER TABLE 顧客データ ADD COLUMN 取扱品目 TEXT(255)" db.close Set db = Nothing MsgBox "終了" End Sub 上記だと新しいフィールドが最後(一番下)に出来てしまします…希望の形は 名称2(メモ型) 名称(テキスト型) 住所(テキスト型) 担当営業(テキスト型) 取扱品目2(メモ型) 取扱品目(テキスト型) 備考(テキスト型) 以上、ヒント等ご指南よろしくお願いいたします。

  • MySQLで新しくフィールドを、ある場所に追加したい。

    普通にフィールドを追加するときは、 add table テーブル名 add 追加するフィールド名 その属性; と書くとおもうのですが、これだとそのテーブルの一番下にフィールドが追加されてしまうと思います。 例えば、上から何番目(あるいは、あるフィールドとあるフィールドの間)にフィールドを追加したい、という処理はできるのでしょうか? よろしくお願いします。

  • MYSQLのフィールドにユニークキーを設定する。

    すでに作ってしまったテーブルにユニークキーを付けたいと考えています。最悪の場合、新しくカラムを作っての追加でもかまわないのですが、いろいろ試してもエラーが返されてしまいます。 codeというカラムにユニークキーを設定したいのですが、 alter table テーブル名 modify unique code; alter table テーブル名 add unique code2; alter table テーブル名 modify code unique; alter table テーブル名 add code2 unique; alter table テーブル名 modify code test unique; alter table テーブル名 add code2 test unique; alter table テーブル名 modify unique code test; alter table テーブル名 add unique code2 test; alter table テーブル名 modify (code unique); alter table テーブル名 add (code2 unique); alter table テーブル名 modify (code text unique); alter table テーブル名 add (code2 text unique); など、思いつく限り試し、グーグルで調べる限り調べたのですが、出てきたものをためしてもダメでした。 テーブルを作成した後、カラムにユニークキーを設定した経験のある方、どのように変更をしたのでしょうか?

    • ベストアンサー
    • MySQL
  • 【MYSQL】フィールド名の変更(半角→全角)について

    フィールド名の変更(半角→全角)について ただいまmysqlを勉強中の初心者なのですが、 入門書を見ながら試験的に作ったテーブルのフィールド名を変更しようとしています。 テーブル名 tbl_employee 元フィールド名 「code」 型 varchar(40) 新フィールド名 「社員コード」 型 varchar(40) ALTER TABLE tbl_employee CHANGE code '社員コード' VARCHAR(40); とか ALTER TABLE tbl_employee CHANGE code 社員コード VARCHAR(40); とか ALTER TABLE tbl_employee CHANGE code '社員コード'; とか ALTER TABLE tbl_employee CHANGE code 社員コード; とか 一通り試してみたのですが動かず… ちなみに「社員コード」ではなく半角で「syain_code」という名前に変更することは出来ました。 全角文字だけがシンタックスエラーになります。 何が原因か分かる方いらっしゃいましたら教えてくださいませ。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • フィールド名に日付を入れたい

    いつも回答ありがとうございます。 MySQL&PHPを利用しております。 下記のように書いたのですが、フィールド追加できません。 $today = date("ymd"); $sql = "ALTER TABLE book1 ADD $today TEXT NOT NULL"; $query = mysql_query($sql, $link); $todayの所を、 $today = "d" . date("ymd"); のように文字を先頭に置くなどするとフィールドを追加できました。 日付はフィールド名として指定できないのでしょうか? CRONで毎日、日付のフィールドを追加して、データの変化を見ていきたいと考えています。 わかる方お願いします。

    • ベストアンサー
    • MySQL
  • テーブルのカラムの追加について

    初歩的なことかもしれませんが、下記質問について教えてください。 現在SQL Server2000の環境でDBを使用しております。 現在使用しているDBの既存テーブルに簡単なバッチファイルを使ってカラムを追加後(ALTER TABLE)、その追加したカラムにデフォルト値やそのテーブルにレコードを追加しようとしています(個々までバッチ処理: 今回試したのは、クエリアナライザにて試験的に行っています)。 ただ、カラムの追加までは可能ですが、デフォルト値やレコードの追加を行うと「追加したカラムが無効です」というエラーが表示されます。 恐れいりますが解決策があれば、教えてください。