• ベストアンサー

テーブルのカラムの追加について

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

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

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

まあ、一介のデザイナーでプログラマではありませんが・・・。 チクッと同じような作業をしてみました。 CREATE TABLE Test (id_name VARCHAR(32) NOT NULL,fainal_value INT Default 1) これは、SQL SERVER 2000 に既定値を持つテーブルを作成するTransact-SQL文です。 周知のように、コマンドラインからバッチファイルとして実行することも可能です。 AccessからSQL文を発行して実行して見ると、確かに、既定値が定義されたテーブルが作成されました。 念のためにクエリアナライザでも実行しても同じ結果を得ました。 osql でも確認しました。 ということは、こんな感じでやればと思います。 さて、多分、ここまでは質問者も到達していることでしょう。 だとすれば、Default設定不可の列に設定しようとしているなどで失敗していると推察します。 Books Online の<DEFAULT 定義の作成と変更>を参照すれば、Defaultの設定には幾つかの条件があることが判ります。 そこら辺りを調べると解決すると思います。

i-miyo
質問者

お礼

回答有難うございます。 初心者なもので、色々苦悩しておりましたが、回答頂きました内容を調べて行ってみたいと思います。

関連するQ&A

  • テーブルのカラム(列)を追加したい

    お世話になります、 DBはOracle8iです。 一度作成して、データが入っているテーブルAの カラム(列)をデータをそのままにして追加できるの でしょうか? 追加前のデータにデフォルト値を与えることはできるのでしょうか? [変更前] 名前 年齢 性別 あ   1  男 い   2  女 う   3  男 ↓カラム追加 [変更後] 名前 年齢 性別 フラグ あ   1  男   0 い   2  女   0 う   3  男   0  以上のような感じにしたいのですが、 Alter table文を使うところまではわかっているのですが。。。 よろしくお願いします。

  • カラムの存在チェック

    あるテーブルに、あるカラム(列)が存在するかどうかを調べる方法はあるのでしょうか? ・あるテーブル(TABLE_A)に、あるカラム(COLUMN_A)が存在しない場合はALTER TABLE ~ ADD でカラム(COLUMN_A)を追加する ・COLUMN_Aがある場合は何もしない というSQL文を作成したいのですが… 宜しくお願いします。

  • カラムの削除が出来ません

    Microsoft SQL2000を使用しているのですが あるテーブル(table_A)のカラム(column_A)を削除したいので 以下のようなクエリ及び、GUIでの削除を実行しました。 ----------------実行クエリ----------------------- ALTER TABLE dbo.table_A DROP COLUMN column_A GO ------------------------------------------------- ところがどちらの削除を方法を実行しても以下のようなエラーメッセージが返されます。 -----------------エラーメッセージ---------------- テーブル 'table_A' - テーブルを修正できません。 ODBC エラー : [Microsoft][ODBC SQL Server Driver][SQL Server] 行 2: 'column_A' の近くに無効な構文があります。 ------------------------------------------------- カラム名の変更などはできるのですが どうしても削除だけ出来ません。 なお、このカラムは主キーとしての設定や 他のテーブルへの外部キーとしての設定を行っていません。 型は[varchar] (20) COLLATE Japanese_BIN NULLです。 どなたか対処方法をご存知の方がおられましたら ご回答よろしくお願いします。 それでは失礼します

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

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

    • ベストアンサー
    • MySQL
  • コラム名でテーブルを検索できますか?

    SQL & ORACLE初心者です。最近、セレクト文を使って、テーブル内のデータを取り出すことができるようになりましたが、逆にコラム名からテーブルを検索することはできるでしょうか。 例えば、TABLE_A内のコラムの中にCOLUMN_Aという名前のコラムがあるとして、このコラムが他のテーブルでも使われているかどうか、いるとしたらどのテーブルかを知りたいのです。また、COLUMN_Aと別のCOLUMN_B(それぞれが単独で記載されているテーブル名はわかっているとします)が一緒にある一つのテーブルで使われているかどうか、またそのテーブル名を知りたいときには、どのようなSQLを書けばよいでしょうか。 DBAやその他DBを構築するための知識をお持ちの方、ご回答をお待ちしています。

  • 既存テーブルにカラム追加でサービス停止

    既存のテーブルに新しいカラムを追加するSQL文をphpmyadmin上から 実行すると、1,2分ほどしてから以下のメッセージを出力してサービスが停止します。 「SHOW TABLE STATUS LIKE 'テーブルA' #2003-サーバが応答しません。」 OS:windows2003 MySQL:4.0.26 全てのテーブルについてエラーになるわけではなく、一部のテーブルのみ現象が発生します。 現象がおきているのをテーブルA,テーブルBとすると、 テーブルAはレコード件数は90万件弱ですが、カラム数が200以上あります。 テーブルBはレコード件数が700万件近くあります。 カラムの追加は3つあり、一つのSQL文で3つを追加しようとしています。 全てのカラムは既存の最後に追加します。 データ型は全てINT(20)です。 以下はエラーログです。 *** Windows2003 アプリログ ************************************************ エラー発生アプリケーション mysqld-nt.exe、 バージョン 0.0.0.0、 エラー発生モジュール mysqld-nt.exe、 バージョン 0.0.0.0、 エラー発生アドレス 0x00173539 どなたかお分かりになる方、おられましたらご教授お願いします。 この質問はMySQLメーリングリストにも投稿しています。 どちらかで回答がもらえれば、回答を掲載します。

  • カラム名の変更(ORACLE)

    DBはオラクルで、sqlplusで、 テーブルのカラム名を変更したいのですが、 教えて下さい。 ALTER TABLE の後どうすればいいのでしょうか? 知っている方、お願いします!

    • ベストアンサー
    • MySQL
  • ALTER TABLEで複数のカラムを消す

    ALTER TABLEでなくてもいいんですが ALTER TABLE KOJINTABLE DROP COLUMN(T_VAL, MEMO); これができませんでした。 T_VALとMEMOを同時に消す書式はありませんか?

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

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

  • MSAccessの追加クエリを使って

    MSAccessの追加クエリを使用して、SQLサーバのテーブルにレコードを追加したいのですが、やり方がわかりません。 追加クエリでテーブルを指定する場合、必ずカレントテーブルしか選択できないのですがSQLサーバとリンクを貼ったテーブルに書き込む設定がわかりません。 お手数ですがよろしくお願いします。