2017-04-06 23 views
0

フィールドの1つ、外部キーが複数の行に含まれるテーブルに複数の行を挿入できるようにする必要があります。現在同じ外部キー値を持つSQLテーブルに新しい行を挿入

私はこのエラーを取得しています、インサートをやろうとしている:私が使用している

An exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll but was not handled in user code

Additional information: Cannot insert duplicate key row in object 'dbo.userGroupMembership' with unique index 'IX_userId'. The duplicate key value is (264673).

問合せ:

INSERT INTO userGroupMembership(userId, usergroupId, created, adultAdminAccessLevel) 
SELECT [userId], 12, GETDATE(), 0 
    FROM [dbo].[userGroupMembership] 
    where usergroupId = @UserGroupId 

ユーザーIDが外部キーフィールドです。

テーブルの設定を変更する必要があるか、同じ外部キーを使用して複数の行を挿入するにはどうすればよいですか?

ありがとう

+1

表の定義を表示します。あなたは不適切な 'unique'制約があるように見えます。 –

+1

外部キーは問題ではありません - テーブルにユニークなキー制約があります – Danny

+0

Thx @Danny、 'Foreign Key Constraint'をNoに設定する必要がありますかhttps://i.gyazo.com/42a947a87ccb7ae8374e153f6a0a4c78.png – Laziale

答えて

1

ユーザーIDごとに1つの行を許可する一意のインデックスがあります。本当にuserIDごとに複数の行が必要な場合は、一意索引を削除してください。

DROP INDEX dbo.userGroupMembership.IX_userID; 
+0

Thx @Anthonyこの値を「外部キー制約」に設定する必要はありません。https://i.gyazo.com/42a947a87ccb7ae8374e153f6a0a4c78.png – Laziale

+1

これは、あなたの意図が何であるかによって異なります。外部キーは一意性とは関係がありません。外部キーは、そのフィールドに入力している値が外部キーが参照するまたはNULLであるプライマリキーを持つテーブルに存在することを保証します。親テーブルに参照なしのデータを挿入する場合は、外部キーを削除することができますが、それはあなたの懸念事項ではないようです。 –

+0

usergroupmembershipテーブルに複数のエントリを同じユーザIDに挿入したい場合はどうすればよいですか? UserIdは、usergroupmembershipテーブルのユーザテーブルと外部キーのプライマリキーです。 Thx – Laziale

関連する問題