2013-10-15 4 views
1

Я использую SQL Server Express 2012 и пытаюсь сделать два реляторанса, два 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'.

MemberId в членов является PK.

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

Кто-нибудь знает, что эта ошибка о? Я читал, что должно быть хорошо, чтобы иметь такие отношения, чтобы они работали.

ответ

0

ошибка происходит потому, что, возможно, вы используете то же имя для внешнего ключа в два раз, так что изменить название второго по некоторому другому значению, например:

FK_BookedResourcesMemberId_MembersMemberId2 
+0

Возможно, конечно, член, который первоначально создал запись в таблице BookedResource, хранится в MemberId. В этом случае у вас нет дублированных данных. – RFerwerda

+0

Правильно, один член может создать, другой член может редактировать. Если вы посмотрите на то, что im Writing, один fk называется EditedBy, другой fk MemberId. – MikeAlike234

+0

@ david2342 kinske не ссылается на имя соответствующих столбцов, а на имя FK. ваше предупреждение указывает, что оба они называются 'FK_BookedResourcesMemberId_MembersMemberId'. Возможно, вы случайно попытались добавить одно и то же отношение столбцов дважды, вам, вероятно, следует их дважды проверить. – Amber

0

От ошибки вы при условии, его похоже, вы пытались назвать оба внешних ключа одинаковыми. Как предлагает @kinse, дайте каждому внешнему ключевому соединению уникальное имя. Кроме того, рассмотрите, нужны ли вам два внешних ключа для одной таблицы - это может указывать на то, что ваша модель базы данных неполна.

Я принимаю предположение, что члены не будут редактировать других членов, поэтому EditedBy (член) и MemberId, как представляется, не нужны в таблице участников.

Смежные вопросы