在简单设置中添加外键时出现问题

时间:2009-11-20 19:40:09

标签: tsql

我有两张桌子

Users
Users_Role

我决定尝试添加一个外键,根据我的理解,它会让我在从用户中删除用户时级联删除过程(以及强制完整性)。

通过Management Studio,我右键单击了我的Users_Role表,Design,然后进入了Relationships。我在这两个表之间添加了一个新的关系:

Foreign Key Base Table: Users_Role
Foreign Key Columns: UserID
Primary/Unique Key Base: Users
Primary/Unique Key columns: ID

当我尝试保存时,出现以下错误:

'Users' table saved successfully
'Users_Role' table
- Unable to create relationship 'FK_Users_Role_Users'.  
The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_Users_Role_Users". The conflict occurred in database "db", table "dbo.Users", column 'ID'.

我不确定发生了什么。将关系添加到Users,但不是Users_Role?关于Users_Role的唯一特别之处在于我的主键包含两列,UserID和Role(表中只有两列,如果重要的话)。否则,没什么特别的。

1 个答案:

答案 0 :(得分:1)

此错误表示在当前数据库中,“Users_Role”表中的条目具有“UserID”值,该值在Users表中不存在为ID

首先需要找到那些“流氓”行并更新或删除它们,然后才能创建外键以强制引用完整性并在将来避免此类问题。

您可以通过发出以下命令找到它们:

  SELECT * FROM Users_Role
  WHERE UserID NOT IN 
        (SELECT DISTINCT ID FROM Users)