2017-04-06 113 views
0

我需要能夠在表中插入多行的其中一個字段,外鍵將包含在多行中。在具有相同外鍵值的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

顯示錶格的定義。你似乎有一個不合適的'唯一'約束。 –

+1

外鍵不是問題 - 在表 – Danny

+0

Thx @Danny上還有一個唯一的鍵約束,我需要將'外鍵約束'設置爲否https://i.gyazo.com/42a947a87ccb7ae8374e153f6a0a4c78.png – Laziale

回答

1

您有一個唯一索引,允許每個用戶ID有一行。如果你真的想要每個用戶標識符多於一行,只需刪除唯一索引。

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

相關問題