SQL: Ajout d'une key étrangère sur une key composite existante

J'ai deux tables avec des données en eux. Nous avions besoin de certaines restructurations, maintenant je dois append une contrainte de key étrangère sur une table qui fait reference à une key composite d'une autre table. Ce sont les définitions de la table Table ABC

CREATE TABLE ABC( ID [int] NOT NULL, ChangeNo [int] NOT NULL, ... UserID [varchar](10) NOT NULL, CONSTRAINT PK_ABC PRIMARY KEY CLUSTERED ( ID,ChangeNo) ) 

Tableau PQR

 CREATE TABLE PQR( ID [int] NOT NULL, UserID [varchar](10) NOT NULL, ... CONSTRAINT PK_PQR PRIMARY KEY CLUSTERED ( ID,UserID) ) 

Pour append une key étrangère, j'utilise la requête suivante

 ALTER TABLE ABC ADD CONSTRAINT FK_ABC_PQR FOREIGN KEY (UserID,ID) REFERENCES PQR(UserID,ID) 

Mais en faisant cela, je reçois erreur suivante.

 The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_ABC_PQR". The conflict occured in database "MyDatabase", table PQR. 

Je cherchais sur le net et j'ai appris que avant d'append une key étrangère, je devrais vérifier qu'il n'y a pas de différence de données entre les colonnes respectives des deux tables. Je l'ai vérifié en utilisant la command suivante.

 SELECT DISTINCT ID,UserID FROM ABC WHERE ID NOT IN (SELECT DISTINCT ID FROM PQR) AND UserID NOT IN (SELECT DISTINCT UserID FROM PQR) 

Et cette requête n'a renvoyé aucun résultat. Cela signifie que toutes datatables dans les colonnes respectives de ABC se trouvent dans ces colonnes respectives de PQR. Mais encore je reçois la même erreur que je l'ai dit ci-dessus, ai-je manqué quelque chose ici? Pourriez-vous me guider s'il vous plaît?

Je vous suggérerais de vérifier datatables en utilisant la requête suivante:

 SELECT count([ABC].[id]) FROM [ABC] LEFT JOIN [PQR] ON ([ABC].[UserID] = [PQR].[UserID] AND [ABC].[id] = [PQR].[id]) WHERE [PQR].[id] is null 

Et cette requête n'a renvoyé aucun résultat. Cela signifie que toutes datatables dans les colonnes respectives de ABC se trouvent dans ces colonnes respectives de PQR.

Non, cela signifie seulement que pour chaque paire ( userid , id ) dans ABC table ABC , il y a une valeur respective de id et userid dans PQR talbe, mais pas une paire de valeurs respective (ie elles ne peuvent pas être dans une seule ligne)

Par exemple, vous pouvez avoir des paires: (1,2) + (2,1) dans ABC , et (1,1) + (2,2) dans PQR et votre requête returnnera 0 lignes. Mais la contrainte de key étrangère échouera.