SQL-Server : es gibt keine primär-oder Kandidaten-Schlüssel in der referenzierten Tabelle, die mit der verweisenden Spaltenliste im Fremdschlüssel 'FK'
Ich habe versucht, lösen diese Fehler für einige Minuten, aber ich weiß nicht, was vermisse ich aus der Tabelle definition.
Den code für die Tabellen unten:
Tabelle 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])
);
Tabelle 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])
)
Wenn ich versuche, führen Sie das zweite Skript bekomme ich die folgende Fehlermeldung (und ich weiß, dass etwas mit der Beziehung zwischen Tabellen) und ich nicht herausfinden, wo das problem sein könnte. Ich bin ein Neuling in C# und SQL-Server, also bitte verzeihen, wenn ich fragte eine dumme Frage.
Msg 1776, Ebene 16, Status 0, Zeile 1
Es gibt keine primär-oder Kandidaten-Schlüssel in der referenzierten Tabelle 'Autocare', die mit der verweisenden Spaltenliste im Fremdschlüssel 'FK_Curse_Autocare'.Msg 1750, Ebene 16, Status 0, Zeile 1
Es konnte keine Einschränkung. Finden Sie in Vorherige Fehlern.
möglich, Duplikat der Es gibt keine primär-oder Kandidaten-Schlüssel in der referenzierten Tabelle, die mit der verweisenden Spaltenliste in der foreign key
Möglich, Duplikat der Es gibt keine Primär-oder Kandidaten-Schlüssel in der referenzierten Tabelle
InformationsquelleAutor cdrrr | 2015-05-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihrem Tisch
Autocare
hat eine Verbindung primary key, bestehend aus zwei Spalten:Daher, eine Tabelle, möchte Verweis
Autocare
muss auch bieten beide Spalten in Ihre foreign key!So wird dies natürlich nicht Arbeit:
da es nur Referenzen eine von den beiden Spalten des Primärschlüssels
Autocare
.Müssen Sie hinzufügen, dass die zweite Spalte
IDTipAutocar
zu IhremCurse
Tabelle und fügen Sie es in Ihrem Fremdschlüssel:Ihre Fremdschlüssel muss immer Referenz die GANZE Primärschlüssel und nicht nur Teile davon.
InformationsquelleAutor marc_s
Einer foreign-key-Referenz muss einen eindeutigen Schlüssel, sei es primär oder nicht. In Ihrem aktuellen geliefert DDL, die eindeutige id (Primärschlüssel) in
Autocare
ist die Kombination vonIDAutocar
undIDTipAutocar
. Auf der anderen Seite, haben SieCurse
verweisen aufAutocare.IDAutocar
, das ist nicht eindeutig.Können Sie entweder fügen
IDTipAutocar
zuCurse
(und der foreign key-definition):Alternativ könnte man entfernen
IDTipAutocar
ausAutocare
's primary key-definition:Denen macht immer mehr Sinn aus Ihrer business-logics-Perspektive.
InformationsquelleAutor Mureinik