Klucz podstawowy w tabeli Person jest prawdopodobnie tożsamością. To jest automatycznie zwiększające się pole całkowite.
Musisz wprowadzić klucz obcy w tabeli adresów typu int, a nie tożsamość. Będzie przechowywał liczby całkowite odpowiadające rekordom osoby, ale nie chcesz, aby klucz obcy był automatycznie zwiększany. Dla każdego rekordu w tabeli podrzędnej (adres) ustawisz określoną wartość klucza obcego, wskazując, do którego rekordu nadrzędnego (osoba) on należy.
Przykład:
INSERT person (firstname, lastname) VALUES ('John', 'Smith')
Spowoduje to wstawienie nowego rekordu osoby i pola personid
zostanie wypełnione automatycznie, ponieważ jest to pole IDENTITY.
Teraz, aby wstawić adres od Jana Kowalskiego, musisz znać jego personid
. Na przykład:
-- Say, for example, personid of John Smith is 55
INSERT address (personid, street, city) VALUES (55, 'High Street', 'London')
Więc w person
tabela personid jest generowany automatycznie, ale w address
tabeli określasz wartość, która pasuje do istniejącej osoby. To jest cały sens klucza obcego.
Bez dodatkowych informacji o schemacie trudno jest odgadnąć problem.