2010-08-11 2 views
0

테이블에 일대 다 반사 연관이 있습니다.일대 다 재귀 연결 INSERT 데이터

일시적인 제약 조건을 비활성화하는 첫 번째 값을 삽입해야합니다. 어떻게해야할까요?

MS SQL 2008을 사용해 주셔서 감사합니다.

CREATE TABLE dbo.CmsCategories 
    (
     CategoryId  int    NOT NULL IDENTITY (0,1) -- Seed = 0 and Increment= 1 
      CONSTRAINT PK_CmsCategories_CategoryId PRIMARY KEY, 
     ParentOf  int    NOT NULL 
      CONSTRAINT DF_CmsCategories_ParentOf DEFAULT 0 
    ); 
ALTER TABLE dbo.CmsCategories 
ADD CONSTRAINT FK_CmsCategories_ParentOf FOREIGN KEY (ParentOf) REFERENCES dbo.CmsCategories(CategoryId); -- One-to-many Reflexive association 
GO 

    INSERT INTO dbo.CmsCategories 
    (ParentOf) 
    VALUES 
    (0); 
+0

귀하의 제약 조건은 무엇입니까? – garik

+0

완벽하게 작동합니다! :) – garik

+0

죄송합니다 얘들 아 제약 코드를 추가하는 것을 잊어 버렸습니다. 감사합니다. – GibboK

답변

0

해결책을 찾았습니까, 감사합니다.

-- CmsCategories: Disable constraint one-to-many reflexive association to add first row 
    ALTER TABLE dbo.CmsCategories 
    NOCHECK 
    CONSTRAINT 
    FK_CmsCategories_ParentOf; 

    ---- CmsCategories: Insert first row - Root value 
    INSERT INTO dbo.CmsCategories 
    (Title, MetaDescription, MetaKeyword, Summary, IsPublished, ParentOf) 
    VALUES 
    ('Homepage','Homepage','Homepage','Homepage',1,0); 

    -- CmsCategories: Enable constraint one-to-many reflexive association 
    ALTER TABLE dbo.CmsCategories 
    CHECK 
    CONSTRAINT 
    FK_CmsCategories_ParentOf; 
+0

테이블에 레코드 CategorId = 0 ....이 있습니다. ParentOf = 0? – garik

+0

네, 그렇다고 가정하고, 카테고리에 대한 계층 구조 데이터를 저장해야합니다. 부모 0 = 내 계층 구조의 루트.이 방식으로 모든 하위 요소는 루트 부모를 갖습니다. – GibboK