Avatar billede mickni33 Nybegynder
20. januar 2006 - 13:51 Der er 2 kommentarer og
3 løsninger

fange en exception

Min (@@FETCH_STATUS = 0 )løkke break'er fordi jeg får denne fejl.....

Server: Msg 1785, Level 16, State 1, Line 1
Introducing FOREIGN KEY constraint 'FK_Tabel2_Tabel3' on table 'Tabel2' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.

Er der mulighed for at man kan fange denne fejl sådan at løkken kan køre videre ?
eks.

while (@@FETCH_STATUS = 0){
  If(Error)
    Gør dettte
        ELSE
          gør dette istedet
kør videre
}

Problemet er jo at løkken break'er fordi status <> 0.... Kan man gøre noget andet
Avatar billede ldanielsen Nybegynder
20. januar 2006 - 14:08 #1
Det er fordi du bruger cascading deletes/updates. Du skal kun oprette dem hvor de virkelig behøves, ligesom du muligvis har overdrevet med foreign keys.

Hvis du nu fjerner alle cascading deletes/updates, så er fejlen væk. Derefter kan du oprette dem igen, og se hvornår fejlen kommer.
Avatar billede mickni33 Nybegynder
20. januar 2006 - 14:11 #2
jeps det er det jeg gør... Der er 90 tabeller og jeg prøver at sætte flueben i Cascade ved hjælp af en løkke....
Der er lidt snask i foreign keys.....Men de må ikke rettes...

DVS det bedste er bare at lave en selct som sortere de tabeller fra som fejler og så bruge den select til min Cursor?
Avatar billede ldanielsen Nybegynder
22. januar 2006 - 13:08 #3
Jeg forstår ikke rigtig problemet? Hvorfor sætter du flueben i cascade ved hjælp af en løkke? Og mener du at du vil vælge cascading delete/update for hver eneste foreign key?

Så kan du komme ud for at tingene går i ring. At en update eller delete forplanter sig gennem systemet på en uventet måde.

Foreign keys må gerne rettes, hvis de er sat forkert. Du skal lave dem efter behov, for at opfylde et formål i forhold til data-integritet, og som en ekstra feature kan du i særlige tilfælde bruge cascading deletes/updates. Der er mange der laver foreign keys overalt, måske fordi det giver sådan nogle flotte streger i diagrammerne.

Foreign keys har også en betydning for performance, men samme formål kan opnås ved at oprette almindelige indexer.

PS: 90 tabeller er ikke så mange at man ikke kan gennemgå dem manuelt, og hvis du gør det, vil du sikkert finde ud af hvor fejlen ligger.
Avatar billede mickni33 Nybegynder
23. januar 2006 - 09:53 #4
Har tænkt mig at sætte flueben manuelt.... Det andet kan ikke lade sig gøre fordi, som du siger, tingene går i ring...
Jeg havde brugt en løkke fordi at så kunne jeg bruge det samme script til en anden database.... HVor den selv gk ind og fandt de tabeller der var i databasen ved en system.object select

Lav lige et svar
Avatar billede ldanielsen Nybegynder
23. januar 2006 - 13:11 #5
Ok, held og lykke med det
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester