Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Server:impossibile creare una relazione

La chiave primaria nella tabella Person è presumibilmente un'identità. Questo è un campo intero a incremento automatico.

È necessario creare la chiave esterna nella tabella degli indirizzi di tipo int, non identity. Conterrà numeri interi che corrispondono ai record Persona, ma non si desidera che la chiave esterna si incrementi automaticamente. Per ogni record nella tabella figlio (indirizzo) imposterai un valore specifico per la chiave esterna indicando a quale record padre (Persona) appartiene.

Esempio:

INSERT person (firstname, lastname) VALUES ('John', 'Smith')

Questo inserirà il nuovo record di persona e il campo personid verrà compilato automaticamente perché è un campo IDENTITÀ.

Ora per inserire un indirizzo di John Smith devi conoscere il suo personid . Ad esempio:

-- Say, for example, personid of John Smith is 55
INSERT address (personid, street, city) VALUES (55, 'High Street', 'London')

Quindi nella person tabella il personid viene generato automaticamente ma nel address tabella si specifica il valore che corrisponde a una persona esistente. Questo è il punto centrale di una chiave esterna.

Senza ulteriori informazioni sul tuo schema è difficile indovinare il problema.