SQL与FOREIGN KEY约束冲突

时间:2009-11-18 20:50:31

标签: sql sql-server-2005

我正在尝试在我的数据库上运行一些更新脚本,我收到以下错误:

  

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中的PK。

另外,我尝试使用SQL Management Studio中的modify table选项创建外键关系,我得到了同样的错误。我不确定我应该寻找什么?

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:68)

您的[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

答案 1 :(得分:0)

我认为你有外键限制的数据尝试在分配外键之前检查两个表上的数据,两个表是否都有限制。