Varchar数据类型作为多对多关系中的主键

时间:2012-03-21 19:19:57

标签: sql-server

我有一个以varchar数据类型作为主键的表。我正试图与这种多对多关系的联结表建立关系。我一直收到错误

  

ALTER TABLE语句与外键约束冲突   关系名称

我不知道这笔交易是什么。由于我已将该字段指定为主键并且已被接受,因此这意味着没有欺骗。外键和主键都具有相同的数据类型,长度相同。两者都不允许空值。问题还有什么呢?

http://imgur.com/MlMSW

2 个答案:

答案 0 :(得分:4)

最有可能的是,联结表中的值在主表中不存在,这会阻止您创建外键关系。

尝试使用类似的内容找到它:

SELECT j.ICD_FK
    FROM ICD_Junction j
        LEFT JOIN ICD_text t
            ON j.ICD_FK = t.ICD_ID
    WHERE t.ICD_ID IS NULL;

答案 1 :(得分:1)

仅仅因为没有空值或重复并不意味着您没有违反外键关系。

我猜测FK列中包含PK列中不存在的值。使用LEFT OUT JOIN WHERE NULL进行检查。