我每次尝试超越查询时都会遇到此错误。我多次检查任何语法错误,但我找不到任何。
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)
之后删除逗号答案 0 :(得分:3)
customer_id VARCHAR(13),参考“客户”,
数据类型和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)
)
答案 1 :(得分:1)
请注意,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