De primaire sleutel in de tabel Persoon is vermoedelijk een identiteit. Dit is een automatisch oplopend geheeltallig veld.
U moet de externe sleutel in de adrestabel van het type int maken, niet de identiteit. Het bevat gehele getallen die overeenkomen met persoonsrecords, maar u wilt niet dat de externe sleutel automatisch wordt verhoogd. Voor elk record in de onderliggende tabel (adres) stelt u een specifieke waarde in voor de refererende sleutel die aangeeft bij welk bovenliggend record (Persoon) het hoort.
Voorbeeld:
INSERT person (firstname, lastname) VALUES ('John', 'Smith')
Dit zal het nieuwe persoonsrecord en het veld personid
invoegen wordt automatisch ingevuld omdat het een IDENTITY-veld is.
Om nu een adres van John Smith in te voegen, moet je zijn personid
weten . Bijvoorbeeld:
-- Say, for example, personid of John Smith is 55
INSERT address (personid, street, city) VALUES (55, 'High Street', 'London')
Dus in de person
tabel wordt de personid automatisch gegenereerd, maar in het address
tabel geeft u de waarde op die overeenkomt met een bestaande persoon. Dat is het hele punt van een externe sleutel.
Zonder meer informatie over je schema is het moeilijk om het probleem te raden.