web-dev-qa-db-fra.com

SQL en conflit avec la contrainte FOREIGN KEY

J'essaie d'exécuter des scripts de mise à jour sur ma base de données et j'obtiens le message d'erreur suivant:

L'instruction ALTER TABLE est en conflit avec la contrainte FOREIGN KEY "FK_UPSELL_DT_AMRNO_AFMKTG_REF". Le conflit s'est produit dans la base de données "ECOMVER", table "dbo.AFFILIATE_MKTG_REF", colonne "AMRNO".

J'exécute le script suivant:

ALTER TABLE [dbo].[UPSELL_DATA]  WITH CHECK ADD 
        CONSTRAINT [FK_UPSELL_DT_AMRNO_AFMKTG_REF] FOREIGN KEY
        (
          [AMRNO]
        ) REFERENCES [dbo].[AFFILIATE_MKTG_REF] (
          [AMRNO]
        )
GO

AMRNO est une PK dans la table AFFILIATE_MKTG_REF.

De plus, j'ai essayé de créer la relation de clé étrangère à l'aide de l'option modify table dans SQL Management studio et j'ai eu la même erreur. Je ne suis pas sûr de ce que je devrais chercher?

Toutes les suggestions seraient grandement appréciées.

25
Brennan Mann

Vous avez probablement des enregistrements dans votre table [dbo]. [UPSELL_DATA] avec des valeurs dans la colonne [AMRNO] qui n'existent pas dans la table [dbo]. [AFFILIATE_MKTG_REF], colonne [AMRNO]. Essayez une requête comme celle-ci pour trouver ceux qui n'ont pas les enregistrements correspondants:

select   *
from     [dbo].[UPSELL_DATA] u
left join [dbo].[AFFILIATE_MKTG_REF] m
on       u.AMRNO = m.AMRNO
where    m.AMRNO is null
68
boydc7

Je pense que vous avez des données restreintes par une clé étrangère essayez de vérifier les données sur les deux tables avant d'attribuer une clé étrangère, s'il existe des restrictions sur les deux tables.

0
pranay