20. marts 2010 - 13:26Der er
6 kommentarer og 1 løsning
Foreign Key ON DELETE kan ikke sættes
Hej eksperter
Jeg forsøger at redigere en table hvor på der er en categoryID kolonne og en parentcategoryID kolonne, således at en kategori kan høre til en anden kategori. Dette virker fint nok, men problemet er at hvis en hovedkategori skal slettes, så skal alle underkatorier ryge med. Dette kan jo gøres ved at sætte ON DELETE egenskaben til CASCADE. Problemet er at jeg ikke må få lov til det af min SQL Server. Jeg bruger GUI, og de egenskaber er bare grå for mig. Altså at jeg ikke kan redigere dem.
De to kolonner er bygget op categoryID er primary og acceptere ikke null. parentcategoryID er foriegnkey til categoryID, men acceptere null. Kan det skyldes at parentID acceptering af null forhindre mig i at sætte min ON DELETE til CASCADE?
ALTER TABLE ProductCategory ADD FOREIGN KEY (ParentID) REFERENCES ProductCategory(CategoryID) ON DELETE CASCADE ON UPDATE NO ACTION
men her er hvad jeg får af fejl:
Msg 1785, Level 16, State 0, Line 1 Introducing FOREIGN KEY constraint 'FK__ProductCa__Paren__44FF419A' on table 'ProductCategory' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Msg 1750, Level 16, State 0, Line 1 Could not create constraint. See previous errors.
For at i kan se hvordan tabellen er opbygget så er der et lille create script. Dette er genereret via GUI (Har fjernet en masse af det der er auto genereret):
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.