Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [POSTGRESQL] creare un "on delete cascade"

    ciao...
    ho una parte di db cosi costituito

    persona(id ,nome,cognome,...);
    scadenza(id ,idpersona*,data...);

    e devo fare in modo che se cancello una persona tutte le tuple relative a quella persona in scadenza devono essere eliminate...

    chi mi aiuta?
    so che dovrei fare un "on delete cascade", oppure un trigger...
    ma ho bisogno di aiuto... è la prima volta che uso postgres.
    sto facendo tutto con pgadminIII...

    grazie
    ciao
    stex1984

  2. #2
    codice:
    ADD CONSTRAINT fk_scadenza_pt_persona FOREIGN KEY (idpersona)
          REFERENCES persona (id)
          ON DELETE CASCADE;

  3. #3
    aiuto!!
    codice:
    ERROR: syntax error at or near "ADD"
    Stato SQL: 42601
    Carattere: 1
    stex1984

  4. #4
    Originariamente inviato da stex1984
    aiuto!!
    codice:
    ERROR: syntax error at or near "ADD"
    Stato SQL: 42601
    Carattere: 1
    scusa nel copia/incollare ho dimenticato una riga ;-)

    codice:
    ALTER TABLE scadenza
    ADD CONSTRAINT fk_scadenza_pt_persona FOREIGN KEY (idpersona)
          REFERENCES persona (id)
          ON DELETE CASCADE;

  5. #5
    ma il constraint non devo metterlo in persona?
    io ho bisogno che eliminando una persona si eliminano tutte le tuple di scandeza...
    è giusto come mi hai detto?
    stex1984

  6. #6
    altra domanda...
    come faccio ad applicare le modifiche al db da pgadminIII ?
    stex1984

  7. #7
    Originariamente inviato da stex1984
    ma il constraint non devo metterlo in persona?
    io ho bisogno che eliminando una persona si eliminano tutte le tuple di scandeza...
    è giusto come mi hai detto?
    Affermativo, è giusto come ti ho detto io.

    scadenza.idpersona punta a persona.id;
    Quindi la constraint è della tabella scadenza.
    Con "on delete cascade" se una persona.id scompare con una delete, allora vengono eliminati i record di scadenza aventi scadenza.idpersona;
    Se elimini una persona (con delete) scompaiono le sue scadenze.
    (prova per verificare)
    Originariamente inviato da stex1984
    altra domanda...
    come faccio ad applicare le modifiche al db da pgadminIII ?
    In due modi:
    - Aprendo una finestra SQL: Menu "Tools->Query tool" copia/incollando, nella finestra che ti comparirà ciò che ti ho scritto prima ed eseguendo con il comando Menu "Query->Execute" (scoricatoia F5). Tra i vari elementi dell'interfaccia trovi anche dei pulsanti equivalenti: un foglio una matita e scritta SQL, per "Tools->Query tool", ed un triangolo verde per "Query->Execute".
    - Cliccando col destro sulla tabella interessata, nel browser del DB, puoi aggiungere colonne, constraint modificare proprietà ecc.. (ti fa vedere pure l'SQL generato).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.