On delete cascade

0

Witam,
mam następujący problem:
po wpisaniu do klucza obcego on delete cascade

 CREATE TABLE [dbo].[Kategorie] (
    [ID_KATEGORII]    INT            IDENTITY (1, 1) NOT NULL,
    [NAZWA_KATEGORII] NVARCHAR (50)  COLLATE SQL_Polish_CP1250_CS_AS NOT NULL,
    [IKONA]           NVARCHAR (MAX) COLLATE SQL_Polish_CP1250_CS_AS NULL,
    [ID_NADKATEGORII] INT            NULL,
    CONSTRAINT [PK_Kategorie] PRIMARY KEY CLUSTERED ([ID_KATEGORII] ASC),
    CONSTRAINT [KategoriaNadkategoria] FOREIGN KEY ([ID_NADKATEGORII]) REFERENCES [dbo].[Kategorie] ([ID_KATEGORII]) on delete cascade
);

program pokazuje następujący błąd:
Line 1 Introducing FOREIGN KEY constraint 'KategoriaNadkategoria' on table 'Kategorie' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.

Bez on delete cascade program działa poprawnie działa poprawnie. Używam sql server wbudowany w Visual studio 2012.

0

Ale czego nie rozumiesz? Masz jasno napisane że nie wolno ci zrobić cascade delete jeśli fk wskazuje na ta sama tabele.

0

a da się zrobić żeby można było zrobić te on delete cascade??

2

Jeśli powiesz programistom jak...
Wyobraź sobie że robisz kategorie która sama dla siebie jest nadkategoria i dajesz taki cascade delete. Co się stanie jak spróbujesz ja usunąć? Ano szbd będzie chciał najpierw usunąć encje zależne, te z fk... Więc spróbuje usunąć nadkategorie, ale żeby ja usunąć musi usunąć encje zależne więc spróbuje usunąć jej nadkategorie i tak w nieskończoność...

1 użytkowników online, w tym zalogowanych: 0, gości: 1