2016-11-10 4 views
0

Ich bin mit den Primärschlüssel in meiner Datenbank struggeling:gruppierten Primärschlüssel und Beziehungen

Example 1

Wie man sehen kann ich einen Clustered-Index verwenden. Wenn ich versuche, etwas wie: Example 2

Ich bekomme eine Ausnahme, dass der Primärschlüssel dupliziert ist, das ist nicht das, was ich erwartet habe. Die Kombination von idQuestionaire und Version muss eindeutig sein, damit mein Einfügeskript funktioniert.

versuchte ich folgende: In dem „Schlüssel“ -Ordner von servey gibt es 4 Tasten (die primäre, den Fremdschlüssel aus parkinglottype, Umfrage $ idQuestionnaire_UNIQUE und Umfrage $ version_UNIQUE)

Nach dem einzigartigen Schlüssel Entfernen des Skript funktioniert gut, aber mein Fremdschlüssel surveyquestion einfügen funktioniert nicht mehr ...

Dies ist der Code von „Umfrage $ idQuestionnaire_UNIQUE“:

ALTER TABLE [dbo].[survey] ADD CONSTRAINT [survey$idQuestionnaire_UNIQUE] UNIQUE NONCLUSTERED 
(
    [idQuestionnaire] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) 
GO 

Und hier mein Primärschlüssel:

Wie kann ich den geclusterten Primärschlüssel mit 2 Spalten eindeutig machen und trotzdem als Fremdschlüssel verwenden?

Antwort

0

Wenn der Primärschlüssel von "Umfrage" ist die zwei Spalten "IDQuestionnaire" und "Version", dann Hinzufügen eines eindeutigen Index zu "IDQuestionnaire" ist ein Fehler. Diese Spalte allein ist nicht einzigartig, wie aus Ihrer Primärschlüsseleinschränkung und Ihrer INSERT-Anweisung hervorgeht.

SQL Server erstellt einen Index für den Primärschlüssel. Zusätzliche Indizes für Primärschlüsselspalten sind normalerweise nicht erforderlich.

Ihre Fremdschlüsseleinschränkung muss auf das Paar der Spalten verweisen, wie ...(Survey_idQuestionnaire, Survey_version) references [dbo].[survey] (idQuestionnaire, version).

Verwandte Themen