Documentazione di PostgreSQL 9.0 > Il linguaggio SQL > Definizione dei dati > Dipendenze
PrecedenteAltri Oggetti di DatabaseManipolazione dei datiSuccessivo

5.11. Dipendenze

Quando si crea una struttura di database complessa che contiene molte tabelle con vincoli hiave esterna, viste, trigger, funzioni, ecc. si crea implicitamente una rete di dipendenze tra gli oggetti. Per esempio, una tabella con un vincolo chiave esterna dipende dalla tabella che referenzia.

Per assicurare l'integrità dell'intera struttura del database, PostgreSQL™ fa sì che non sia possibile eliminare oggetti dai quali ne dipendono altri. Per esempio, tentare di rimuovere la tabella dei prodotti considerata in Sezione 5.3.5, «Chiavi Esterne», con la tabella ordini che dipende da essa, restituirà un messaggio di errore simile a questo:

DROP TABLE products;

NOTICE:  constraint orders_product_no_fkey on table orders depends on table products
ERROR:  cannot drop table products because other objects depend on it
HINT:  Use DROP ... CASCADE to drop the dependent objects too.

Il messaggio di errore contiene un suggerimento utile: se non ci si vuole preoccupare di cancellare tutti gli oggetti dipendenti individualmente, si può eseguire:

DROP TABLE products CASCADE;

e tutti gli oggetti dipendenti saranno rimossi. In questo caso, non viene rimossa la tabella ordini, viene rimosso solo il vincolo chiave esterna. (Se si vuole controllare cosa farà DROP ... CASCADE, eseguire DROP senza CASCADE e leggere i messaggi NOTICE.)

Tutti i comandi drop in PostgreSQL™ supportano la possibilità di specificare CASCADE. Certamente, la natura delle possibile dipendenze varia con il tipo di oggetto. È possibile anche scrivere RESTRICT invece di CASCADE per avere il comportamento di default, che serve a prevenire l'eliminazione degli oggetti che dipendono da altri.

[Nota]

Nota

Secondo lo standard SQL, specificare RESTRICT o CASCADE è necessario. Nessun sistema di database attualmente forza questa regola, ma che il comportamento di default sia RESTRICT o CASCADE varia a seconda del sistema.

[Nota]

Nota

Le dipendenze dei vincoli chiave esterna e delle colonne serial da versioni di PostgreSQL™ prima della 7.3 not sono mantenute o create durante un processo di aggiornamento. Tutti gli altri tipi di dipendenza saranno correttamente creati durante un aggiornamento da un database di versione precedente alla 7.3.

Documentazione di PostgreSQL 9.0 > Il linguaggio SQL > Definizione dei dati > Dipendenze
PrecedenteAltri Oggetti di DatabaseManipolazione dei datiSuccessivo