SQL Server : il n'y a aucun primaire ou le candidat clés dans la table référencée qui correspondent le référencement liste des colonnes de la clé étrangère 'FK'
J'ai essayé de résoudre cette erreur, pendant plusieurs minutes, mais je ne sais pas ce qui me manque de définition de la table.
Le code de la tables sont ci-dessous:
Table Autocare
:
CREATE TABLE [dbo].[Autocare]
(
[IDAutocar] NUMERIC (18, 0) NOT NULL,
[IDTipAutocar] NUMERIC (18, 0) NOT NULL,
PRIMARY KEY CLUSTERED ([IDAutocar] ASC, [IDTipAutocar] ASC),
CONSTRAINT [FK_Autogari_TipAutocar]
FOREIGN KEY ([IDTipAutocar])
REFERENCES [dbo].[TipAutocar] ([IDTipAutocar])
);
Table Curse
:
CREATE TABLE [dbo].[Curse]
(
[IDCursa] NUMERIC (18, 0) NOT NULL PRIMARY KEY,
[IDTraseu] NUMERIC (18, 0) NOT NULL,
[Data] TIMESTAMP NOT NULL,
[IDCompanie] NUMERIC (18, 0) NOT NULL,
[NrLocuri] NUMERIC (18, 0) NOT NULL,
[IDAutocar] NUMERIC (18, 0) NOT NULL,
CONSTRAINT [FK_Curse_Trasee]
FOREIGN KEY ([IDTraseu])
REFERENCES [Trasee]([IDTraseu]),
CONSTRAINT [FK_Curse_Companii]
FOREIGN KEY ([IDCompanie])
REFERENCES [Companii]([IDCompanie]),
CONSTRAINT [FK_Curse_Autocare]
FOREIGN KEY ([IDAutocar])
REFERENCES [Autocare]([IDAutocar])
)
Lorsque j'essaie d'exécuter la deuxième script j'obtiens l'erreur suivante (et je sais que quelque chose est liée à la relation entre les tables) et je n'arrive pas à comprendre d'où peut être le problème. Je suis un débutant en C# et SQL Server, donc s'il vous plaît pardonnez si je pose une question stupide.
Msg 1776, Niveau 16, État 0, La Ligne 1
Il n'y a aucun primaire ou le candidat clés dans la table référencée 'Autocare' qui correspondent le référencement liste des colonnes de la clé étrangère 'FK_Curse_Autocare'.Msg 1750, Niveau 16, État 0, La Ligne 1
N'a pas pu créer de contrainte. Voir les erreurs précédentes.
double possible de Il n'y a aucun primaire ou le candidat clés dans la table référencée qui correspondent le référencement liste des colonnes de la clé étrangère
Double Possible de Il n'y a aucun Primaire ou le Candidat Clés dans la table référencée
OriginalL'auteur cdrrr | 2015-05-09
Vous devez vous connecter pour publier un commentaire.
Votre table
Autocare
a un composé clé primaire composée de deux colonnes:Par conséquent, toute table qui souhaite référence
Autocare
doit également fournir les deux colonnes dans leur clé étrangère!Donc, ce sera bien évidemment pas travail:
depuis elle fait uniquement référence un des deux colonnes de la clé primaire de
Autocare
.Vous avez besoin d'ajouter que la deuxième colonne
IDTipAutocar
à votreCurse
table et l'inclure dans votre clé étrangère:Vos clés étrangères doit toujours référence l'ENSEMBLE de la clé primaire - et pas seulement des pièces de.
OriginalL'auteur marc_s
Une clé étrangère doit faire référence à une clé unique, que ce soit primaire ou pas. Dans votre courant fourni DDL, l'identificateur unique (clé primaire) dans
Autocare
est la combinaison deIDAutocar
etIDTipAutocar
. D'autre part, vous avezCurse
référencementAutocare.IDAutocar
, qui n'est pas unique.Vous pouvez ajouter
IDTipAutocar
àCurse
(et sa définition de clé étrangère):Alternativement, vous pouvez supprimer
IDTipAutocar
deAutocare
'clé primaire définition:Qui fait plus de sens à partir de votre logique métier.
OriginalL'auteur Mureinik