Diese Frage zu this one ziemlich ähnlich ist, aber für SQL Server 2005:Fremdschlüssel ein 2 Spalten Primärschlüssel in SQL Server verweisen
Ich habe 2 Tabellen in meiner Datenbank:
--'#' denotes the primary key
[Libraries]
#ID #Application Name
1 MyApp Title 1
2 MyApp Title 2
[Content]
#ID Application LibraryID Content
10 MyApp 1 xxx
11 MyApp 1 yyy
(die Datenbank ist offensichtlich viel komplexer und mit diesem doppelten Schlüssel ist sinnvoll)
Jede Bibliothek wird durch seine eindeutige ID und Anwendungsname identifiziert. Ich versuche sicherzustellen, dass jeder Inhalt ordnungsgemäß auf eine vorhandene Bibliothek verweist.
Wenn die Einschränkung der Erstellung (mit dem Assistenten) als
Primary key table Foreign key table
[Libraries] [Content]
ID ---> LibraryID
Application ---> Application
Ich habe folgende Fehlermeldung:
The columns in table 'Libraries' do not match an existing primary key or UNIQUE constraint
Haben Sie eine Vorstellung davon, was los ist? und wenn es mit SQL Server überhaupt möglich ist? (Ich kann die [Bibliothek] Tabelle überhaupt nicht ändern)
Vielen Dank für Ihre Hilfe!
Ich habe die Benutzeroberfläche direkt an diesem Punkt verwendet, aber die Verwendung Ihrer Syntax löst den folgenden Fehler aus: "In der referenzierten Tabelle 'dbo.Libraries' gibt es keine Primär- oder Kandidatenschlüssel, die mit der referenzierenden Spaltenliste im Fremdschlüssel übereinstimmen. .. – Luk
Nun, in diesem Fall ist das Paar (Id, Application) ** nicht ** der Primärschlüssel in der Bibliothekentabelle.Sie können nur auf den Primärschlüssel in einer Elterntabelle verweisen - oder auf eine Spalte (oder einen Satz von Spalten)) Das ist Teil eines eindeutigen Indexes. Überprüfen Sie Ihre 'Bibliotheken' Tabelle! –
Das war mein erster Gedanke auch, aber das SQL-Skript gibt 'CREATE TABLE [Bibliotheken] (' ... 'CONSTRAINT [PK_sf_Libraries] PRIMÄRSCHLÜSSEL ([Anwendung] ASC, [ID] ASC) WITH (PAD_INDEX = AUS, STATISTICS_NORECOMPUTE = AUS, IGNORE_DUP_KEY = AUS, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) EIN [PRIMARY] '... (Entschuldigung für dum ping all die SQL hier) – Luk