2017-06-14 54 views
-1
CREATE table dbo.PRODUCTS(

[Product ID] int not null, 
[Product name] varchar(20) not null, 
[Min price] decimal(10,2) not null, 
[Artist ID] varchar(20)not null, 
[genre] varchar(20)not null, 


primary key ([Product ID]), 

constraint ARTIST FOREIGN KEY ([Artist ID]) 
REFERENCES ARTISTS ([Artist email]), 
) 


CREATE table dbo.ORDERS_DETAILS(

[Purchase number] int not null, 
[Product ID] int not null, 
[Total price] decimal(10,2) not null, 
primary key ([Purchase number],[Product ID]), 

constraint DF_PRODUCT FOREIGN KEY ([Product ID]) 
****REFERENCES PRODUCTS ([Product ID]),**** 
constraint fk_PURCHASE FOREIGN KEY ([Purchase number]) 
REFERENCES PURCHASES ([Purchase number]), 
) 

错误:我不明白为什么外键约束没有产品ID工作

Foreign key 'DF_PRODUCT' references invalid column 'Product ID' in referenced table 'PRODUCTS'.

有人可以帮助我了解为什么这个返回此错误?它无法识别产品表中的产品ID列,即使该表已正确创建并且正在工作。

+1

尝试在右括号之前删除结尾逗号。我创建了两个表都很好。 –

+0

请显示您确实运行的确切代码。请尽可能多地打开错误报告。请阅读[mcve]并采取行动。 – philipxy

+1

@WEI_DBA尾随逗号不相关,这在T-SQL中是可以接受的,并且通常在生成的代码中找到。 @Maya我也创建了两个表,我猜你可能有另一个名为'PRODUCTS'的表,除了'dbo.PRODUCTS'之外,有一个不同的模式。试试'REFERENCES dbo.PRODUCTS([Product ID]),'代替。 – pcdev

回答

0

在再次创建表之前删除表。

IF EXISTS (SELECT * FROM sys.all_objects 
WHERE type_desc = 'USER_TABLE' 
AND name = 'PRODUCTS') 
BEGIN 
    DROP TABLE [PRODUCTS] 
END 

IF EXISTS (SELECT * FROM sys.all_objects 
WHERE type_desc = 'USER_TABLE' 
AND name = 'ORDERS_DETAILS') 
BEGIN 
    DROP TABLE [ORDERS_DETAILS] 
END 

然后根据预期创建您的表格。