22

Voglio una chiave esterna tra 2 tavoli, quindi provo come faccio sempre. Ora il problema che sto avendo è che non riesce a creare, e dal suo aspetto non riesce a creare perché c'è già una chiave ma non esiste.Chiave esterna non riesce a creare

- Unable to create relationship 
'FK_tbl_Paramed_RegistratieBehandelingen_Users'. 
    The ALTER TABLE statement conflicted with the 
    FOREIGN KEY constraint "FK_tbl_Paramed_RegistratieBehandelingen_Users". 
    The conflict occurred in database "Nestor_Server", 
    table "dbo.Users", column 'UserID'. 

Ive ha verificato se hanno lo stesso tipo, che fanno (bigint) in modo da non ottenere perché non lo creerà

risposta

48

E 'possibile che si dispone di record in RegistratieBehandelingen (non sono sicuro il nome della tabella) che non è presente nella Tabella utenti.

select * from RegistratieBehandelingen a where UserID IS NULL or 
not exists (select 1 from Users b where b.UserID= a.UserID) 
+1

Sì, un valore nullo è scivolato tra le reti, sembra che questo sia il motivo per cui continua a non funzionare. Grazie –

+0

Esattamente .. Ho appena avuto lo stesso problema. Per verificare se questo è il caso, provare a creare la chiave esterna utilizzando "NO CHECK". Questo creerà la chiave, ma non cadrà se i dati esistenti non corrispondono alla regola della chiave esterna esatta che stai cercando di creare. –

11

Ciò significa che si dispone di dati figlio senza ID padre corrispondente.

Eseguire il seguente per vedere se si ottiene alcun risultato:

SELECT * 
FROM tbl_Paramed_RegistratieBehandelingen r 
LEFT JOIN Users u on r.UserID = u.UserID 
WHERE u.UserID IS NULL 

(nomi di tabella che cambia e di colonna, se del caso)

Se si ottiene alcun risultato, allora dovrebbe mostrare che registra contiene UserIDs che don abbinare agli utenti.

0

Dopo la query precedente, è possibile eliminare UserId non esistente dalla tabella tbl_Paramed_RegistratieBehandelingen o inserirli nella tabella Users.