Avatar billede jacobve Nybegynder
17. december 2000 - 23:49 Der er 6 kommentarer og
1 løsning

Delete cascade

Jeg leder efter syntaksen til en delete sætning der udover at slette den ønskede post, også sletter de poster i andre tabeller der har fremmednøgler til den ønskede post.
Og hvis disse har fremmednøgler, skal de også slettes osv.


Jeg har ladet mig fortælle at dette kan gøres vha. \'cascade\', men jeg kan ikke finde en syntaks for dette....

Kan du ikke lige fyre op for et eksempel?
Avatar billede rennebo Nybegynder
17. december 2000 - 23:57 #1
Har du prøvet med \"cascade constraints\"??
Avatar billede pnielsen Nybegynder
18. december 2000 - 00:05 #2
bruger :
    drop user TEST cascade;

Række:
En lille test på gode gamle scotts tabeller :

  SQL> delete dept where deptno=20;
  delete dept where deptno=20
        *
  ERROR at line 1:
  ORA-02292: integrity constraint (SCOTT.EMP_FOREIGN_KEY) violated
            - child record found


  SQL> set constraint emp_foreign_key deferred;

  Constraint set.

  SQL> delete dept where deptno=20;

  1 row deleted.

Ellers mener jeg(er ikke helt sikker) at tabellen skal oprettes med en constraint:
En lille test :
CREATE TABLE test1 (c1 DATE, c2 VARCHAR2(2), test NUMBER,
      CONSTRAINT test1 PRIMARY KEY (c1,c2,test));

CREATE TABLE test2 (c1 DATE, c2 VARCHAR2(2), test NUMBER,
        CONSTRAINT test2 FOREIGN KEY (c1,c2,test)
        REFERENCES test1(c1,c2,test) ON DELETE CASCADE);


Håber det hjælper dig lidt !
Avatar billede jacobve Nybegynder
18. december 2000 - 11:58 #3
Min delete sætning ser indtil nu sådan her ud:

DELETE from privatkunde where kundenr = :kundenr;

men jeg vil gerne have den til at slette de fremmednøgler der findes.

Tabellerne er oprettet med constraints.

hvor skal jeg skrive \'cascade constraints\' i sådan en sætning?
Avatar billede jacobve Nybegynder
18. december 2000 - 12:01 #4
eller ups...

de er ikke oprettet som pnielsen har skrevet i sin test, men \'bare\' med PRIMARY KEY´s og FOREIGN KEY´s. Det er det jeg mener med constraints.
Avatar billede jacobve Nybegynder
18. december 2000 - 12:54 #5
Jeg har fået løst problemet ved at bruge ON DELETE CASCADE... takker for svarene
Avatar billede pnielsen Nybegynder
18. december 2000 - 20:42 #6
ok :)

Sorry at jeg først skriver nu, men du fandt jo heldigvis selv ud af hvad du manglede!
Jeg har været på juleindkøb med kæresten hele dagen. Det endte med at hun kiggede på tøj alle steder :( 
Men sådan er de kvinder jo... he he :-)

God jul og godt nytår!
Håber vi alle kan hjælpe hinanden en masse i det nye år :)
Avatar billede jacobve Nybegynder
19. december 2000 - 00:07 #7
samme her....:-)
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