A chave primária na tabela Person é presumivelmente uma identidade. Este é um campo inteiro com incremento automático.
Você precisa fazer a chave estrangeira na tabela de endereços do tipo int, não identidade. Ele conterá inteiros que correspondem aos registros de Pessoa, mas você não deseja que a chave estrangeira seja incrementada automaticamente. Para cada registro na tabela filho (endereço) você definirá um valor específico para a chave estrangeira indicando a qual registro pai (Pessoa) ele pertence.
Exemplo:
INSERT person (firstname, lastname) VALUES ('John', 'Smith')
Isso inserirá o novo registro de pessoa e o campo
personid
será preenchido automaticamente porque é um campo IDENTIDADE. Agora, para inserir um endereço de John Smith, você precisa conhecer seu
personid
. Por exemplo:-- Say, for example, personid of John Smith is 55
INSERT address (personid, street, city) VALUES (55, 'High Street', 'London')
Então, na
person
table o personid é gerado automaticamente mas no address
tabela você especifica o valor que corresponde a uma pessoa existente. Esse é o ponto principal de uma chave estrangeira. Sem mais informações sobre seu esquema, é difícil adivinhar o problema.