1

私は SQL Server Express 2012 を使用しており、2 つの関係 (同じテーブルから別のテーブルの 1 つの PK への 2 つの FK) を作成しようとしています。

データベース ダイアグラムに表示されるため、リレーションシップは機能しているように見えますが、変更を保存しようとすると、次のエラーが表示されます。

「メンバー」テーブルが正常に保存されました 「BookedResources」テーブル - 関係「FK_BookedResourcesMemberId_MembersMemberId」を作成できません。
ALTER TABLE ステートメントが FOREIGN KEY 制約 "FK_BookedResourcesMemberId_MembersMemberId" と競合しました。データベース「resursBokning2」、テーブル「dbo.Members」、列「MemberId」で競合が発生しました。

Member の MemberId は PK です。

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

このエラーの内容を知っている人はいますか? この種の関係を持つことは問題ないので、うまくいくはずだと読んだことがあります。

4

2 に答える 2

0

あなたが提供したエラーから、両方の外部キーに同じ名前を付けようとしたようです。@kinse が示唆するように、各外部キー関係に一意の名前を付けます。また、同じテーブルに対して 2 つの外部キーが必要かどうかを検討してください。これは、データベース モデルが不完全であることを示している可能性があります。

私は、Members が他のメンバーを編集していないことを前提としているため、EditedBy (メンバー) と MemberId は members テーブルでは不要なようです。

于 2013-10-15T08:22:23.890 に答える
0

外部キーに同じ名前を 2 回使用している可能性があるため、エラーが発生します。そのため、2 番目の名前を別の値に変更します。たとえば、次のようになります。

FK_BookedResourcesMemberId_MembersMemberId2
于 2013-10-15T08:19:15.187 に答える