2017-06-14 1 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]), 
) 

l'erreur:Je ne comprends pas pourquoi la contrainte de clé étrangère ne fonctionne pas sur ID produit

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

Quelqu'un peut-il me aider à comprendre pourquoi cela renvoie cette erreur? Il ne reconnaît pas la colonne d'ID de produit de la table de produit même si la table a été créée correctement et fonctionne.

+1

Essayez de supprimer la virgule de fin avant la parenthèse fermante. J'ai créé les deux tableaux très bien. –

+0

Veuillez indiquer le code exact que vous avez réellement exécuté. Veuillez activer autant de rapports d'erreurs que possible. Veuillez lire et agir sur [mcve]. – philipxy

+1

@WEI_DBA La virgule de fin n'est pas pertinente, elle est acceptable dans T-SQL et se trouve souvent dans le code généré. @Maya J'ai aussi créé les deux tables, je suppose que vous pouvez avoir une autre table appelée 'PRODUCTS' avec un schéma différent de' dbo.PRODUCTS'. Essayez 'REFERENCES dbo.PRODUCTS ([Product ID]),' à la place. – pcdev

Répondre

0

Supprimez les tables avant de les créer à nouveau.

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 

Puis créez vos tables comme prévu.