2010-08-11 3 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

Смежные вопросы