none
CREATE TABLE文でデフォルト制約の制約名を指定して表を作成したい RRS feed

  • 質問

  • SQL Server2000を使用しています。
    CREATE TABLEでデフォルト制約の制約名を指定したいのですが、
    うまくいきません。
    以下のようなSQLを実行しています。


    Code Snippet
    CREATE TABLE TABLE_NAME(
     COLUMN1 CHAR(3),    --列1
     COLUMN2 CHAR(30) NOT NULL,  --列2
     COLUMN3 DATETIME   --列3
     CONSTRAINT pky_table_name PRIMARY KEY (COLUMN1,COLUMN3), --主キー制約
     CONSTRAINT def_column3 DEFAULT '2000/01/01' FOR column3 --デフォルト制約
    )

     

     

     

    ALTER TABLE文と同じ形式で記述しているのですが、

    赤字の行でエラーとなってしまいます。

     

    ALTER TABLE文と併用した場合は成功します。

    Code Snippet

    CREATE TABLE TABLE_NAME(
     COLUMN1 CHAR(3),    --列1
     COLUMN2 CHAR(30) NOT NULL,  --列2
     COLUMN3 DATETIME   --列3
     CONSTRAINT pky_table_name PRIMARY KEY (COLUMN1,COLUMN3) --主キー制約

    )

     

    ALTER TABLE TABLE_NAME
     ADD CONSTRAINT def_column3 DEFAULT '2000/01/01' FOR column3 --デフォルト制約

     

     

    CREATE TABLE文で制約名を指定してのデフォルト制約作成は不可能なのでしょうか?

    もしご存知でしたら教えて頂けませんか?

     

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

     

    2008年7月14日 7:56

回答

  • 列の定義に追加すれば指定できます。

    今回の場合、COLUMN3の後ろに制約を指定すれば、CREATE DATABASEでも設定できます。

    (この時、FOR <列名>は不要です)

     

    以下が修正したクエリです。

    Code Snippet
    CREATE TABLE TABLE_NAME(
     COLUMN1 CHAR(3),    --列1
     COLUMN2 CHAR(30) NOT NULL,  --列2
     COLUMN3 DATETIME CONSTRAINT def_column3 DEFAULT '2000/01/01'
     CONSTRAINT pky_table_name PRIMARY KEY (COLUMN1,COLUMN3), --主キー制約
    )

     

    2008年7月14日 8:48

すべての返信

  • 列の定義に追加すれば指定できます。

    今回の場合、COLUMN3の後ろに制約を指定すれば、CREATE DATABASEでも設定できます。

    (この時、FOR <列名>は不要です)

     

    以下が修正したクエリです。

    Code Snippet
    CREATE TABLE TABLE_NAME(
     COLUMN1 CHAR(3),    --列1
     COLUMN2 CHAR(30) NOT NULL,  --列2
     COLUMN3 DATETIME CONSTRAINT def_column3 DEFAULT '2000/01/01'
     CONSTRAINT pky_table_name PRIMARY KEY (COLUMN1,COLUMN3), --主キー制約
    )

     

    2008年7月14日 8:48
  • ご回答ありがとうございます。

     

    無事、制約名を指定してテーブルを作成できました。

    とても助かりました。

     

    ありがとうございます。

     

    2008年7月14日 10:04