0

クエリを実行しようとするたびに、このエラーが発生し続けます。構文エラーを何度もチェックしましたが、見つかりません。

Msg 142, Level 15, State 2, Line 0
Incorrect syntax for definition of the 'TABLE' constraint. 

CREATE TABLE "hold" (
    timePutOnHold TIME(7),
    customer_id VARCHAR(13),REFERENCES "Customer",
    isbn VARCHAR(13) REFERENCES "Item_Details",
    PRIMARY KEY (customer_id, isbn, timePutOnHold)
)

解決しました!customer_id VARCHAR(13)の後にコンマを削除する必要がありました

4

2 に答える 2

4

customer_id VARCHAR(13)、REFERENCES "Customer"、

データ型とREFERENCESキーワードの間のコンマが、構文エラーの原因である可能性があります。

一般に、制約に意味のある名前を付けて、後で簡単に削除できるようにすることをお勧めします。

CREATE TABLE hold 
( 
   timeputonhold TIME(7), 
   customer_id   VARCHAR(13), 
   isbn          VARCHAR(13), 
   CONSTRAINT pk_hold PRIMARY KEY (customer_id, isbn, timeputonhold), 
   CONSTRAINT fk_hold_customer FOREIGN KEY (customer_id) REFERENCES customer(customer_id), 
   CONSTRAINT fk_hold_isbn FOREIGN KEY (isbn) REFERENCES item_details(isbn) 
) 
于 2013-02-20T05:32:04.003 に答える
3

DEFAULT制約は、CREATETABLEステートメントの構文に関して異なることに注意してください。

コンマ区切り文字がない場合、CONSTRAINTは前の列を参照します。

-- correct syntax for adding a default constraint to a CREATE TABLE statement    
IsAvailable BIT NOT NULL CONSTRAINT d_IsAvailable DEFAULT(1)

ただし、コンマ区切りとキーワードDEFAULT FORを使用すると、同じエラーメッセージが生成されます。

-- incorrect syntax for adding a default constraint to a CREATE TABLE statement
IsAvailable BIT NOT NULL
, CONSTRAINT d_IsAvailable DEFAULT(1) FOR IsAvailable

このニュアンスはCONSTRAINT constraint_name DEFAULT(constraint) FOR column_name、ALTER TABLEステートメントに対して正しいため、注意が必要な場合があります。

参考資料:
テーブルを作成するときにデフォルトの制約を宣言する
列のデフォルト値を指定する

于 2016-12-02T16:24:25.560 に答える