2010-11-26 5 views
0

SQL Server에서 null이거나 값을 가질 수있는 열이있는 테이블을 만드는 방법을 알아 내려고하고 있습니다. 값이 있으면 값이 저장된 행을 제외하고 테이블의 기존 기본 키로 제한해야합니다.SQL Server - 기본 키에 대한 테이블의 열 또는 동일한 테이블의 null

check 제약 조건이 필요합니까? 그렇다면 표현은 무엇입니까?

이유는 테이블의 개체가 다른 테이블의 자식이 될 수 있기 때문입니다. 이상적으로 매핑 테이블없이이 작업을 수행하는 것이 좋습니다.

기본 키 이름은 'id'입니다.

제한하려고하는 열은 'parentId'입니다. parentId는 null이거나 테이블의 다른 행에 유효한 ID를 참조 할 수 있습니다.

답변

1

은 당신이 여기에서해야 할 것은 예를 들어, 같은 테이블에 외래 키 관계를 만드는 것입니다 :

CREATE TABLE [dbo].[Category](
    [ID] [int] IDENTITY(1,1) NOT NULL, 
    [CategoryName] [nvarchar](150) NOT NULL, 
    [ParentCategoryID] [int] NULL, 
CONSTRAINT [PK_tblCategory] PRIMARY KEY CLUSTERED 
([ID] ASC)) 
GO 

ALTER TABLE [dbo].[Category] WITH CHECK ADD CONSTRAINT [FK_tblCategory_tblCategory] 
FOREIGN KEY([ParentCategoryID]) REFERENCES [dbo].[Category] ([ID]) 
GO 

ALTER TABLE [dbo].[Category] CHECK CONSTRAINT [FK_tblCategory_tblCategory] 
GO 
+0

건배. 요구 사항이 변경되었으며 이제 각 항목에 하나 이상의 부모가 있어야합니다. 즉 네임 스페이스에 두 번 이상 나타날 수 있습니다. 이것은 원래의 질문을 해결합니다. – Sam

+0

이러한 요구 사항이 바뀌면 더 좋아야합니다! 새로운 요구 사항은 관계가 막 관리하기가 쉽다는 것을 의미합니다. – JonVD

관련 문제