Gå til innhold

Vrient problem med å slette i Oracle


Anbefalte innlegg

Eg skal slette data i ein tabell som har referanse til ein parent_id inni seg

 

den har to kolloner: lokasjon id og lokasjon parent id

 

problemet her er at om eg skriver DELETE LOCATION_ID FROM LOCATION så slår ein constraint til at den ikkje kan slette ein lokasjon id som er parent til ein anna id.

 

Eg har prøvd med ein subquery som kjører order by, men dette går ikkje grunnet Oracle ikkje støtter det, det er vell ikkje vanleg i andre databaser heller?

 

Eg kan løyse dette med å skru av constrainten, men det hadde vore greit med ein *skikkeleg* lausning :)

Lenke til kommentar
Videoannonse
Annonse
Eg skal slette data i ein tabell som har referanse til ein parent_id inni seg

 

den har to kolloner: lokasjon id og lokasjon parent id

 

problemet her er at om eg skriver DELETE LOCATION_ID FROM LOCATION så slår ein constraint til at den ikkje kan slette ein lokasjon id som er parent til ein anna id.

 

Eg har prøvd med ein subquery som kjører order by, men dette går ikkje grunnet Oracle ikkje støtter det, det er vell ikkje vanleg i andre databaser heller?

 

Eg kan løyse dette med å skru av constrainten, men det hadde vore greit med ein *skikkeleg* lausning :)

 

Når man jobber med hierarkiske tabeller, kan STARTS WITH og CONNECT BY være til stor hjelp.

 

Det fungerer med sletting av data også.

 

Eksempel:

 

DELETE FROM EMPLOYEE

WHERE EMP_ID IN 

(SELECT EMP_ID FROM EMPLOYEE

START WITH LNAME = 'JONES'

CONNECT BY MANAGER_EMP_ID = PRIOR EMP_ID);

 

Werner

Lenke til kommentar
Eg skal slette data i ein tabell som har referanse til ein parent_id inni seg

 

den har to kolloner: lokasjon id og lokasjon parent id

 

problemet her er at om eg skriver DELETE LOCATION_ID FROM LOCATION så slår ein constraint til at den ikkje kan slette ein lokasjon id som er parent til ein anna id.

 

Eg har prøvd med ein subquery som kjører order by, men dette går ikkje grunnet Oracle ikkje støtter det, det er vell ikkje vanleg i andre databaser heller?

 

Eg kan løyse dette med å skru av constrainten, men det hadde vore greit med ein *skikkeleg* lausning :)

 

Når man jobber med hierarkiske tabeller, kan STARTS WITH og CONNECT BY være til stor hjelp.

 

Det fungerer med sletting av data også.

 

Eksempel:

 

DELETE FROM EMPLOYEE

WHERE EMP_ID IN 

(SELECT EMP_ID FROM EMPLOYEE

START WITH LNAME = 'JONES'

CONNECT BY MANAGER_EMP_ID = PRIOR EMP_ID);

 

Werner

Fantastisk! Då har eg lært noko nytt, eg visste at det var noko som var fullt mogleg hehe :) Takk for hjelpa!

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...