이 문제가 검색되었지만 불행히도 해결책을 찾지 못했습니다. 나는 내 응용 프로그램에서 연락처를 만들려고 할 때INSERT 문이 FOREIGN KEY 제약 조건과 충돌했습니다.
나는 오류
외래 키 제약 "FK_Contacts_UserProfile"와 충돌 INSERT 문을 얻는다. 데이터베이스 "ContactAppContext", 테이블 "dbo.UserProfile", 열 'UserId'에서 충돌이 발생했습니다.
나는
내 테이블은 다음과 같이 보이는 Contacts
테이블과 UserId
를 연결할 : 당신이 그림에서 볼 수 있듯이, UserId
이 UserProfile
테이블에 존재
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)
);
그래서 내가 뭘 잘못하고 있니?
EDIT 1
@Alexander Fedorenko는
이 코드를 의미?
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로 데이터베이스에 저장됩니까?
Contact 테이블에 삽입하려는 사용자 ID가 UserProfile 테이블에 있어야합니다. - – Sachin
이름이나 전자 메일 주소와 같은 열에는'NVARCHAR (MAX)'를 사용하지 마십시오. –
실제 삽입 코드를 게시하십시오. –