Modifica, cancellazione e transazioni sui dati

Modificare i dati nelle tabelle

L’istruzione che ci permette di modificare una o più righe già presenti in una tabella è UPDATE.

Sintassi di “UPDATE”

UPDATE <nome tabella> SET <(nomi colonne da modificare)> = <(valori di input)> WHERE <condizione>;

Vediamo qualche esempio. Modifichiamo il primo record inserito nella tabella impiegati.

SQL> UPDATE impiegati
  2  SET Nominativo = 'Ludovici Pasquale'
  3  WHERE ID_Impiegato = 1;

Con il precedente comando abbiamo modificato il contenuto della sola colonna Nominativo, sostituendolo con la stringa ‘Ludovici Pasquale’, esclusivamente per la riga di tabella la cui colonna ID_Impiegato è uguale a 1. Proviamo a modificare più colonne con una sola istruzione.

SQL> UPDATE impiegati
  2  SET Data_Assunz = TO_DATE ('01-Mar-2006', 'DD-MON-YYYY'),
  3       Paese_Residenza = 'Albano';

Abbiamo aggiornato contemporaneamente le colonne Data_Assunz e Paese_Residenza per tutti i record presenti nella tabella impiegati. L’assenza della clausola WHEREnell’istruzione UPDATE, diversamente dal precedente esempio, ci assicura che le modifiche vengono apportate a tutte le righe presenti in tabella. Nel caso dovessimo modificare più colonne con una stessa istruzione UPDATE, così come abbiamo appena fatto, allora dobbiamo opportunamente separare i nomi di colonna mediante l’uso delle virgole.

Possiamo anche modificare il contenuto di tabelle che non sono in nostro possesso, ma è necessario che il proprietario delle stesse (o il DBA) ci dia l’autorizzazione a farlo concedendoci l’apposito privilegio.

Transazioni, COMMIT E ROLLBACK

Dopo ogni modifica apportata ai dati di una tabella mediante il comando UPDATE è buona regola far seguire il comando COMMIT, che effettua la scrittura immediata delle operazioni di modifica nei corrispondenti datafile del database.

Questa operazione fornisce, in tempo reale, le modifiche apportate anche agli altri utenti eventualmente collegati allo stesso database che, in caso contrario, avrebbero una visione non aggiornata delle tabelle.

Al contrario, se modificassimo erroneamente il contenuto di una tabella possiamo sempre recuperare la situazione precedente alle modifiche con l’istruzione ROLLBACK, purché l’operazione di UPDATE non sia stata seguita dalla COMMITROLLBACK annulla le modifiche effettuate alle tabelle del database, esclusivamente per l’utente da cui parte questo comando, fino all’ultima COMMIT eseguita. Sia COMMIT sia ROLLBACK sono sempre seguite dal punto e virgola (;). È chiamata transazione l’insieme di istruzioni di modifica dati che avvengono fra due COMMIT.

Cancellare righe in una tabella

Il comando DELETE consente di rimuovere una o più righe da una tabella

Sintassi di “DELETE”

DELETE FROM <nome tabella> WHERE <condizione>;

La clausola WHERE è opzionale e indica, mediante la condizione imposta, l’insieme delle righe da cancellare. In mancanza di questa tutte le righe della tabella riferita verrebbero cancellate. Facciamo qualche esempio cancellando inizialmente la riga della tabella contatti avente colonna “IDContatto” uguale a 3.

SQL> DELETE FROM contatti WHERE IDContatto = 3;

Se volessimo invece cancellare tutte le righe presenti in tabella scriveremmo

SQL> DELETE FROM contatti;

Anche per il comando UPDATE vale ciò che abbiamo precedentemente detto in riferimento alle istruzioni COMMIT e ROLLBACK.

Il comando TRUNCATE

Nel precedente esempio abbiamo visto come cancellare tutte le righe di una tabella col comando DELETE. Il comando, TRUNCATE ha lo stesso scopo ma si differenzia da DELETEper alcune caratteristiche importanti.

Anzitutto TRUNCATE è un comando DDL, contrariamente a DELETE che è DML.

Nota: dopo ogni comando di tipo DDL (CREATE TABLEDROP TABLE, etc.) Oracle esegue sempre una COMMIT automatica, pertanto non è più possibile annullare le modifiche.

Altra importante differenza è che il comando TRUNCATE non genera informazioni per il ripristino dei dati eliminati (contrariamente al comando DELETE che permette il ROLLBACK), quindi la sua esecuzione è molto più veloce su tabelle piccole e grandi.

 

Sintassi di “TRUNCATE”

TRUNCATE TABLE <tabella>;

Nota: Il comando TRUNCATE elimina tutte le righe presenti in tabella, non la tabella dal database.

Both comments and pings are currently closed.

Comments are closed.