J'essaie d'ajouter une clé étrangère à une table et cela me donne l'erreur suivante:
Il n'y a pas de clé primaire ou candidate dans la table référencée 'tbl_Person' correspondant à la liste de colonnes de référence dans la clé étrangère 'P_ID'.
J'ai un tbl_Person, qui est défini comme:
P_ID INT (Primary Key)
f_Name,
l_Name
l'autre table est une table de commentaires définie comme suit:
C_ID INT,
Comments,
P_ID (should be the foreign key)
Essayer de créer une table de relations un à plusieurs. Ainsi, lorsque l'utilisateur ajoute un commentaire, celui-ci lui est référencé. Il peut également ajouter des commentaires sans initialiser un nouveau commentaire. Espérons que cela a un sens.
Ex: Randy Bing entrez "I love SQL", son identifiant est 1, f_Name est Randy, l_Name est Bing, ses commentaires sont "I love Sql". Ses commentaires doivent stocker un identifiant unique et importer son identifiant P_ID.
Plus tard, quand Randy voudra ajouter un commentaire avec le même C_ID, P_ID lui correspond sans créer de nouveau C_ID.
Voici le code:
ALTER TABLE tbl_Comments
ADD CONSTRAINT P_ID
FOREIGN KEY (P_ID)
REFERENCES tbl_Person(P_ID)
Suis-je sur le point d'être sur la bonne voie?
Cette erreur signifie généralement que les types de données sont différents entre "Commentaires" et "Personne", en supposant qu'il s'agisse du message
Le SQL devrait être ceci
ALTER TABLE tbl_Comments WITH CHECK ADD
CONSTRAINT FK_Comments_Person FOREIGN KEY (P_ID) REFERENCES tbl_Person (P_ID)
Cela correspond à ce que vous avez ajouté. Alors:
Dans l'Explorateur d'objets, connectez-vous à une instance du moteur de base de données.
Dans la barre standard, cliquez sur Nouvelle requête.
L'exemple crée une clé étrangère dans la colonne TempID et référence la colonne SalesReasonID dans la table Sales.SalesReason.
USE AdventureWorks2012;
GO
ALTER TABLE Sales.TempSalesReason
ADD CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID)
REFERENCES Sales.SalesReason (SalesReasonID)
ON DELETE CASCADE
ON UPDATE CASCADE
;
GO
le nom de votre contrainte, p_id, entre en conflit avec le nom de la colonne p_id