Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL Server:Não é possível criar relacionamento


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.