SQL конфликтует с ограничением FOREIGN KEY

Я пытаюсь запустить некоторые сценарии обновления для своей базы данных, и я получаю следующую ошибку:

Оператор ALTER TABLE конфликтует с ограничением FOREIGN KEY "FK_UPSELL_DT_AMRNO_AFMKTG_REF". Конфликт произошел в базе данных "ECOMVER", таблица "dbo.AFFILIATE_MKTG_REF", столбец "AMRNO".

Я запускаю следующий скрипт:

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 - это ПК в таблице AFFILIATE_MKTG_REF.

Кроме того, я попытался создать отношение внешнего ключа, используя опцию изменения таблицы в SQL Management Studio, и получил ту же ошибку. Я не уверен, что я должен искать?

Любые предложения будут ценны.

2 ответа

Решение

Возможно, в вашей таблице [dbo].[UPSELL_DATA] есть записи со значениями в столбце [AMRNO], которых нет в таблице [dbo].[AFFILIATE_MKTG_REF], столбец [AMRNO]. Попробуйте запрос, подобный этому, чтобы найти те, у которых нет соответствующих записей:

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

Я думаю, что у вас есть данные, ограниченные внешним ключом, попробуйте проверить данные в обеих таблицах перед назначением внешнего ключа, есть ли ограничения для обеих таблиц.

Другие вопросы по тегам