2013-02-20 2 views
0

Я постоянно получаю эту ошибку каждый раз, когда я пытаюсь исключить запрос. Я проверил для любых синтаксических ошибок несколько раз, но я не могу найти их.SQL Неправильный синтаксис для определения ограничения 'TABLE'

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)

ответ

2

customer_id VARCHAR (13), Лит «Клиент»,

Запятая между типом данных и ключевое слово ЛИТЕРАТУРЫ может вызывать синтаксис ошибка.

В целом, это хорошая практика, чтобы дать значимые имена ограничениям, чтобы их можно было легко сбросить позже.

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) 
) 
+0

Спасибо за совет по поводу имен ограничений. Я буду помнить об этом. – Dynamiite

0

Обратите внимание: ограничения DEFAULT отличаются от синтаксиса в инструкции CREATE TABLE.

Без разделителя запятой 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.

Дополнительная литература:
Declaring a default constraint when creating a table
Specify Default Values for Columns

Смежные вопросы