Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server:Beziehung kann nicht erstellt werden

Der Primärschlüssel in der Person-Tabelle ist vermutlich eine Identität. Dies ist ein automatisch inkrementierendes Integer-Feld.

Sie müssen den Fremdschlüssel in der Adresstabelle vom Typ int erstellen, nicht von Identität. Es enthält Ganzzahlen, die Personendatensätzen entsprechen, aber Sie möchten nicht, dass der Fremdschlüssel automatisch erhöht wird. Für jeden Datensatz in der untergeordneten Tabelle (Adresse) legen Sie einen bestimmten Wert für den Fremdschlüssel fest, der angibt, zu welchem ​​übergeordneten Datensatz (Person) er gehört.

Beispiel:

INSERT person (firstname, lastname) VALUES ('John', 'Smith')

Dadurch wird der neue Personendatensatz und das Feld personid eingefügt wird automatisch ausgefüllt, da es sich um ein IDENTITY-Feld handelt.

Um nun eine Adresse von John Smith einzufügen, müssen Sie seine personid kennen . Zum Beispiel:

-- Say, for example, personid of John Smith is 55
INSERT address (personid, street, city) VALUES (55, 'High Street', 'London')

Also in der person tabelle wird die personid automatisch generiert, aber in der address Tabelle geben Sie den Wert an, der zu einer vorhandenen Person passt. Das ist der springende Punkt bei einem Fremdschlüssel.

Ohne weitere Informationen zu Ihrem Schema ist das Problem schwer zu erraten.