我有两张桌子
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(表中只有两列,如果重要的话)。否则,没什么特别的。
答案 0 :(得分:1)
此错误表示在当前数据库中,“Users_Role”表中的条目具有“UserID”值,该值在Users
表中不存在为ID
。
首先需要找到那些“流氓”行并更新或删除它们,然后才能创建外键以强制引用完整性并在将来避免此类问题。
您可以通过发出以下命令找到它们:
SELECT * FROM Users_Role
WHERE UserID NOT IN
(SELECT DISTINCT ID FROM Users)