La clave principal en la tabla Person es presumiblemente una identidad. Este es un campo entero de incremento automático.
Debe hacer que la clave externa en la tabla de direcciones sea de tipo int, no de identidad. Contendrá números enteros que corresponden a registros de personas, pero no desea que la clave externa se incremente automáticamente. Para cada registro en la tabla secundaria (dirección), establecerá un valor específico para la clave externa que indica a qué registro principal (Persona) pertenece.
Ejemplo:
INSERT person (firstname, lastname) VALUES ('John', 'Smith')
Esto insertará el nuevo registro de persona y el campo personid
se llenará automáticamente porque es un campo de IDENTIDAD.
Ahora, para insertar una dirección de John Smith, necesita saber su personid
. Por ejemplo:
-- Say, for example, personid of John Smith is 55
INSERT address (personid, street, city) VALUES (55, 'High Street', 'London')
Entonces en la person
table el ID de persona se genera automáticamente pero en la address
tabla se especifica el valor que coincide con una persona existente. Ese es el objetivo de una clave externa.
Sin más información sobre su esquema, es difícil adivinar el problema.