Documentazione di PostgreSQL 9.0 > Il linguaggio SQL > Manipolazione dei dati > Aggiornamento dati
PrecedenteManipolazione dei datiCancellazione datiSuccessivo

6.2. Aggiornamento dati

La modifica dei dati che sono già presenti nel database si identifica come aggiornamento. Potete aggiornare righe individuali, tutte le righe in una tabella, o un sottoinsieme di tutte le righe. Ogni colonna può essere aggiornata separatamente; le altre colonne non sono interessate.

Per effettuare un aggiornamento, avete bisogno di tre informazioni:

  1. Il nome della tabella e della colonna da aggiornare,

  2. Il nuovo valore della colonna,

  3. Quale riga o righe aggiornare.

Ricordarsi dal Capitolo 5, Definizione dei dati che SQL, in generale, non fornisce un identificatore unico per le righe. Di conseguenze, non è possibile specificare direttamente quale riga aggiornare. Dovete, invece, specificare quali condizioni una riga deve soddisfare per essere aggiornata. Solo se avete nella tabella una chiave primaria (non importa se l'avete dichiarata oppure no) potete indirizzare individualmente le righe, scegliendo una condizione che uguaglia la chiave primaria. Gli strumenti di accesso ai database grafici contano su questo fatto per consentirvi di aggiornare le righe individualmente.

Per esempio, questo comando aggiorna tutti i prodotti che hanno un prezzo di 5 portandolo a 10:

UPDATE products SET price = 10 WHERE price = 5;

Questo comando può causare l'aggiornamento di zero, uno, o più righe. Non è un errore tentare un aggiornamento che non soddisfa nessuna riga.

Guardiamo il comando in dettaglio. In testa c'è la parola chiave UPDATE seguita dal nome della tabella. Come di consueto, il nome della tabella può essere qualificato con schema, altrimenti viene cercato nel percorso. Dopo c'è la parola chiave SET seguita dal nome della colonna, un segno uguale ed il nuovo valore della colonna. Il nuovo valore della colonna può essere una espressione scalare, non solo una costante. Per esempio, se volete incrementare il prezzo di tutti i prodotti del 10% dovrete usare:

UPDATE products SET price = price * 1.10;

Come potete vedere, l'espressione relativa al nuovo valore può far riferimento ai valori esistenti nelle righe. Non è stata utilizzata la clausula WHERE. Se è stata omessa, significa che tutte le righe della tabella verranno aggiornate. Se è presente, solo le righe che soddisfano la condizione WHERE verranno aggiornate. Notare che il segno uguale nella clausula SET è un'assegnazione mentre lo stesso segno uguale nella clausula WHERE è un confronto, ma questo non crea nessuna ambiguità. Naturalmente, la condizione WHERE non deve essere usata come test di uguaglianza. Per fare questo sono disponibili molti altri operatori (vedere il Capitolo 9, Funzioni e Operatori). Ma l'espressione deve portare a valutare un risultato di tipo Booleano.

Potete aggiornare più di una colonna in un comando UPDATE inserendo più di un assegnamento nella clausula SET. Per esempio:

UPDATE miatabella SET a = 5, b = 3, c = 1 WHERE a > 0;

Documentazione di PostgreSQL 9.0 > Il linguaggio SQL > Manipolazione dei dati > Aggiornamento dati
PrecedenteManipolazione dei datiCancellazione datiSuccessivo