2013-10-15 72 views
1

我正在使用SQL Server Express 2012并试图做两个relatonships,从同一个表中的两个FK到另一个表中的一个PK。两个FK对一个PK

的关系似乎工作,因为它在数据库中的图显示了,但是当我尝试保存更改,我收到以下错误:

'Members' table saved successfully 'BookedResources' table - Unable to create relationship 'FK_BookedResourcesMemberId_MembersMemberId'.
The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_BookedResourcesMemberId_MembersMemberId". The conflict occurred in database "resursBokning2", table "dbo.Members", column 'MemberId'.

成员Id的成员是PK。

BookedResouce.EditedBy(FK) - > Member.MemberId(PK)
BookedResouce.MemberId(FK) - > Member.MemberId(PK)

有人知道这个错误是什么? 我读过,应该可以有这种关系,所以它应该工作。

回答

0

错误发生,因为也许你的一个外键使用相同的名称两次,所以更改第二名称为其他值,如:

FK_BookedResourcesMemberId_MembersMemberId2 
+0

它当然可以是最初在BookedResource表中创建记录的成员存储在MemberId中。在这种情况下,你没有重复的数据。 – RFerwerda

+0

这就是对,一个成员可以创建,另一个成员可以编辑。如果你看什么即时通讯写作,一个fk被称为EditedBy,另一个fk MemberId。 – MikeAlike234

+0

@ david2342 kinske不会引用相关列的名称,而是引用FK的名称。你的警告表明两者都被称为'FK_BookedResourcesMemberId_MembersMemberId'这可能是你无意中试图两次添加相同的列关系,你应该仔细检查它们。 – Amber

0

从您提供的,它的错误看起来像你试图命名两个外键相同。正如@kinse所暗示的,给每个外键关系一个唯一的名字。另外,请考虑是否需要两个外键到同一个表 - 它可能表明您的数据库模型不完整。

我假定成员不会编辑其他成员,因此EditedBy(成员)和MemberId在成员表上显得不必要。