我搜索了這類問題,但不幸找不到任何解決方案。INSERT語句與FOREIGN KEY約束衝突
當我嘗試創建我的應用程序的聯繫人我得到一個錯誤
INSERT語句衝突與外鍵約束「FK_Contacts_UserProfile」。數據庫「ContactAppContext」,表「dbo.UserProfile」,列'UserId'發生衝突。
我想UserId
與Contacts
表進行關聯
我的表是這樣的:
CREATE TABLE [dbo].[Contacts] (
[ContactId] INT IDENTITY (1, 1) NOT NULL,
[UserId] INT NOT NULL,
[FirstName] NVARCHAR (MAX) NOT NULL,
[LastName] NVARCHAR (MAX) NOT NULL,
[Address] NVARCHAR (MAX) NOT NULL,
[City] NVARCHAR (MAX) NOT NULL,
[Phone] NVARCHAR (MAX) NOT NULL,
[Email] NVARCHAR (MAX) NOT NULL,
CONSTRAINT [PK_dbo.Contacts] PRIMARY KEY CLUSTERED ([ContactId] ASC),
CONSTRAINT [FK_Contacts_UserProfile] FOREIGN KEY ([UserId]) REFERENCES [dbo].[UserProfile] ([UserId])
);
CREATE TABLE [dbo].[UserProfile] (
[UserId] INT IDENTITY (1, 1) NOT NULL,
[UserName] NVARCHAR (56) NOT NULL,
PRIMARY KEY CLUSTERED ([UserId] ASC),
UNIQUE NONCLUSTERED ([UserName] ASC)
);
正如你可以在圖片中看到,UserId
存在於UserProfile
表
那麼我在做什麼錯了?
編輯1
@Alexander費德林
你的意思是這個代碼?
SET IDENTITY_INSERT [dbo].[UserProfile] ON
INSERT INTO [dbo].[UserProfile] ([UserId], [UserName]) VALUES (1, N'admin')
INSERT INTO [dbo].[UserProfile] ([UserId], [UserName]) VALUES (2, N'test')
INSERT INTO [dbo].[UserProfile] ([UserId], [UserName]) VALUES (3, N'user')
SET IDENTITY_INSERT [dbo].[UserProfile] OFF
@Sachin我如何確定,當我嘗試插入聯繫人表中時,它應該出現在UserProfile表中?例如,我有一個UserId = 3的用戶,他已經登錄,當他插入數據時,創建的聯繫人將與該用戶有關。
EDIT 2
所以,當我創建了一個編輯字段在視圖中UserId
,它似乎是工作,當我指定UserId
,並且數據被創建,但我不希望這個編輯器領域在創建聯繫人頁面中存在UserId
,因爲用戶編寫他的UserId
是不方便的。那麼是否有可能將UserId
與登錄用戶聯繫起來,例如當他創建數據時,他不需要指定他的UserId
,而是將該記錄自動保存到數據庫中並使用他的ID?
確保無論用戶標識符,您試圖插入聯繫人表中,它都應該出現在UserProfile表中。 - – Sachin
請勿將'NVARCHAR(MAX)'用於名稱或電子郵件地址等列。 –
請發佈實際的插入代碼。 –