DELETE CASCADE in PostgreSQL

Ho un database PostgreSQL sulle cui tabelle vorrei ottenere l'effetto di delete a cascata quando vengono cancellate le righe selezionate. Su queste tabelle però non è definita la regola ON DELETE CASCADE, come posso fare? C'è un altro modo?

Qualcosa di equivalente a questo per intenderci:

DELETE FROM my_table CASCADE;
In Corso 5
PostgreSQL 01-06-2018 1 Risposta 2862 Visite 0

Risposte ( 1 approvate )

  1. Luigi Empolo
    0
    01-06-2018 16:14:06
    Rispondi

    NO non puoi farlo, per automatizzare a livello di database un effetto a cascata, anche in PostgreSQL devi dapprima definire una foreign key che relazioni le tabelle e poi su questa applicare un vincolo di constraint (regola) come ON DELETE CASCADE

    CASCADE specifica che quando una riga relazionata con un'altra è cancellata, la row(s) referenziata dovrebbe essere automaticamente cancellata.

    Ad esempio se hai impiegati e buste paghe, se cancelli una riga impiegato in automatico (a cascata) vengono cancellate anche le sue buste paghe poiché ad esso relazionate.

    Puoi ottenere un comportamento analogo via codice, via linguaggio di programmazione che invoca un'altra query per fare il DELETE a Cascata, ma ovviamente non è performante, pulita ed elegante come la soluzione descritta sopra a livello di database.

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

Gregorio Mercenesi

Gregorio Mercenesi

Autore di questa domanda

 Domanda Precedente

 Elenco Domande 

Domanda Successiva