• ベストアンサー

テーブル作成後なんですが、Primary Keyをスクリプトで追加したい

Windows2000でSQLServerを使用しています。 テーブルは作成したのですが、後からある項目にPrimary Key を エンタープライズマネージャを使用せず、スクリプトで追加したいのですが、 構文がわかりません。 どなたか教えていただけませんでしょうか。 よろしくお願いいたします。

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

  • ベストアンサー
  • noopee
  • ベストアンサー率38% (114/297)
回答No.2

あけましておめでとうございます。 遅くなりましたが再度。 現在、自由にいじれるSQLServerの環境がないので、動作確認はしてないのですが、ちょこっと調べた感じだと、補足の内容はできないようです。 一度DropしてからAddしないとダメ、のようなこと書いてありました。 もしかしたら調べ方が悪いのかも、ですがあまり可能性はなさそうです。 お力になれなくてすみません。

参考URL:
http://www.users.gr.jp/

その他の回答 (1)

  • noopee
  • ベストアンサー率38% (114/297)
回答No.1

こんばんは。 Alter Table tablename(テーブル名) Add Constraint constraint_definition(制約定義) のような感じ。 「Constraint」を使用して、プライマリキー制約を追加します。 すでにあるデータ行に設定したいときは、その内容がチェックされてNULLや重複行があればエラーが返ります。 すでに設定済みの場合もエラーが返ってきます。

question
質問者

補足

noopeeさん。早々のお答えありがとうございます!! すみません。色々しましたかどーーしても上手くいかないので補足します。 T_TEMP(テーブル名) KomokuA(Primary Key) KomokuB(Primary Key) KomokuC KomokuD ←これにPrimaryKeyを追加したい。 ↑仮にこんな状態のテーブルです。 Alter Table T_TEMP Add Constraint KomokuD Primary Key のようなことをすると、「既にそのテーブルで定義された主キーを持っています。」とか制約が・・とか2行ほど言われてしまいます。 ためしにテーブルのPrimaryKeyを全て外して、複数PrimaryKeyを指定したら 上手く動いたんですけど・・。 もしよろしければ具体的に教えていただけませんでしょうか? よろしくお願いします。

関連するQ&A

  • Oracleのテーブル作成スクリプトを作成したい

    Oracle8i のDBA Studioで数十の表を作成したのですが、ここからテーブルの作成スクリプトを出そうとして困りました。いわゆる Create Table文なのですが、これを自動で簡単に作る方法はないでしょうか?SQL-ServerのEnterprise Managerでは、SQLスクリプトの作成があって、Create文を簡単に生成できるのですが、これと同じような感覚で、既に作成してあるテーブルのCreate文を出力する方法はないでしょうか?Oracleには、ほとんど慣れていないので、方法があると思うのですが、探し方が悪いらしく途方にくれています。どなたかよい方法を御存じないでしょうか。

  • SQLServer2000:テーブルの先頭に列を追加したい

    いつもお世話になっております SQLServer2000を使用しております。 あるテーブルに a,b,c,dという4つの項目が存在している状態で aの前にzというフィールドを追加したいと考えております。 Enterprise Managerを使えば簡単に行うことが出来ますが、 これをクエリアナライザで行いたい場合に どのようにSQL文を記述すればよいのか、見つけることが出来ませんでした。 このようなことは可能なのでしょうか。 ご存知の方がいらっしゃいましたら、ご教示のほど、何卒よろしくお願いいたします。

  • TEXTでのPRIMARY KEYの使い方

    customer テーブルを作って、その中にname, email, passwordをそれぞれtext型が入ってます。その後にalter table customer add customer primary key(email);で、emailにprimary keyをつけようとしてるのですが、ERROR1170 Bolb/Text column 'email' used in key specification without a key lengthと言ってます。textの大きさを指定とかするべきなのでしょうか??本当はcreateの最初の段階で、primary keyを入れたかったのですが、その時も同じエラーが出たため、tableを作ってから追加しようと試みてます。他の型で試してみたら、primary keyは難なく追加できました。text型だと何かやり方が違うのでしょうか。ちなみに全てnot nullに設定してあります。回答お願いします。

    • ベストアンサー
    • MySQL
  • SQLSERVER2000 DBスキーマ表作成について

    SQLSERVER2000の運用を始めたのですが、お聞きしたいことが ありご質問しました。 環境 SQLSERVER2000 Standard Edition 既存のテーブルの項目を、wordなどでスキーマ表を作成したいのですが、自動で表を作成するなどの機能はないのでしょうか。 (作業ではEnterprise Managerなどを使用しています。) アドバイスを頂ければと思いますのでよろしくお願い致します。

  • SQLServer2005のテーブル作成について

    こんにちわ。 いまSQLServer2005Expressをダウンロードして, データベースを作成し,そこにテーブルを作成しようとしています。 そこで「SQLServer Managemant Studio Express」を使用すれば, 一応テーブルを作成することができるのですが, テーブル定義のスクリプトを作成して, OracleのSQL*Plusのようなコマンド機能から実行したいのですが, SQLServerではそれはどの機能にあたるのでしょうか? 教えてください。よろしくお願いします。

  • DBのCreate文スクリプト作成について

    現在あるDBの全テーブルのCreate文を取得したいのですが・・ 以前は、SQLSERVER2000のEnterPrizeManagerでコンソールルートから すべてのタスク、SQLスクリプト作成で選択したテーブルすべての スクリプト文をいっぺんに作成出来ていたのですが、 SQLSERVER2008に環境が変わったので、同じことを使用としても Management Studioでテーブルを選び、テーブルをスクリプト化 でやっても一つのテーブルしかスクリプト文が出来ません。 SQLSERVER2008では、同じように全テーブルのスクリプト文を一度に 作成する方法はないのでしょうか? 教えてください。

  • 主キーを追加しようとするとエラー

    MYSQL4.0を使っていますが、 テーブル作成後、主キーを追加しようと ALTER TABLE MYTABLE ADD PRIMARY KEY ID; などと書くと、syntaxエラーになってしまいます。 どこが悪いのでしょうか、 分かる人がいましたら教えてください。

    • ベストアンサー
    • MySQL
  • Postgresqlでのテーブル作成について

    どなたかご教授願えますでしょうか。 <マスタ> <トランザクション> Kaisya Kojin-NO Simei      kaisya saiban-NO Kojin-NO AAA   0001   名前A1      AAA   1     0002 AAA   0002   名前A2      AAA 2     0001 BBB   0001   名前B1  ⇒   BBB 1 0001 BBB   0002   名前B2      BBB 2 0002 CCC   0001   名前C1      CCC 1 0002 CCC   0002   名前C2      CCC 2 0001 マスタのkaisyaとKojin-N0をキーにするべく各項目指定の後に constraint KEY_NAME primary key ( Kojin-NO, kaisya      ) として複合のキー設定をしてテーブルを作成しました。このマスタテーブルは作成できたのですが、 トランザクションを作成しようとCreate Tableを使用しましたが ERROR:relation "Key_name" already Exists となり作成できません。 ちなみにトランザクションのsaiban-NO、KaisyaがPrimary Key Kaisyaとkojin-NOをマスタの外部キーとして設定しようとしていました。 そもそもこの考え方が間違っているのでしょうか。

    • 締切済み
    • PHP
  • 主キー、インデックスが作成できない

    お世話になります。 SQLserver2000とACCESS(フロント)で使っております。 主キーもインデックスも設定していなかったテーブルに エンタープライズマネージャから主キーを設定しようとしたのですが、保存しようとすると以下のエラーが出てしまいます。 もともと更新クエリを作成したのですが、”更新可能なクエリであることが必要です。”とエラーが出てしまい、いろいろ調べるうちに主キーを設定していないから??と思い、設定しようとしたのですがうまくいきません。。宜しくお願いします。 ■エラー内容 テーブル 'テーブル名 (ユーザー名)' - インデックス 'インデックス名' を作成できません。 ODBC エラー : [Microsoft][ODBC SQL Server Driver][SQL Server]インデックス ID 1 で重複したキーが見つかったので、CREATE UNIQUE INDEX は終了しました。もっとも重要な主キーは 'XXXX-00XXXX-00-A1 ' です。 [Microsoft][ODBC SQL Server Driver][SQL Server]制約を作成できませんでした。以前のエラーを調べてください。 [Microsoft][ODBC SQL Server Driver][SQL Server]ステートメントは終了されました。

  • テーブル生成スクリプトの実行方法

    SQL Server2000で、 テーブル生成スクリプトの実行方法を教えてください。 Enterprise ManagerからGUIで実行できますか? ジョブステップで実行しようとしたら、SQL文が長すぎて収まりませんでした。 よろしくお願いします。