Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Aggiorna i valori in una o più colonne della tabella quando una condizione è soddisfatta.
Nota
Le dimensioni massime per una istruzione SQL è di 16 MB.
Sintassi
[ WITH [RECURSIVE] common_table_expression [, common_table_expression , ...] ] UPDATE table_name [ [ AS ] alias ] SET column = { expression | DEFAULT } [,...] [ FROM fromlist ] [ WHERE condition ]
Parametri
- Clausola WITH
-
Clausola facoltativa che ne specifica una o più. common-table-expressions Consultare Clausola WITH.
- table_name
-
Tabella temporanea o persistente. Solo il proprietario della tabella o un utente con il privilegio UPDATE sulla tabella può aggiornare le righe. Se utilizzi la clausola FROM o selezioni dalle tabelle in un'espressione o una condizione, devi avere il privilegio SELECT su tali tabelle. Non puoi assegnare alla tabella un alias, ma puoi specificare un alias nella clausola FROM.
Nota
Le tabelle esterne di Amazon Redshift Spectrum sono di sola lettura. Non puoi eseguire UPDATE per una tabella esterna.
- alias
-
Nome alternativo temporaneo per una tabella di destinazione. Gli alias sono facoltativi. La parola chiave AS è sempre facoltativa.
- SET column =
-
Una o più colonne che vuoi modificare. Le colonne che non sono elencate mantengono i rispettivi valori correnti. Non includere il nome della tabella nella specifica di una colonna di destinazione. Ad esempio,
UPDATE tab SET tab.col = 1
non è valido. - espressione
-
Espressione che definisce il nuovo valore per la colonna specificata.
- DEFAULT
-
Aggiorna la colonna con il valore predefinito assegnato alla colonna nell'istruzione CREATE TABLE.
- FROM tablelist
-
Puoi aggiornare una tabella facendo riferimento alle informazioni presenti in altre tabelle. Elenca queste altre tabelle nella clausola FROM o utilizza una sottoquery come parte della condizione WHERE. Le tabelle elencate nella clausola FROM possono avere alias. Se è necessario includere la tabella di destinazione dell'istruzione UPDATE nell'elenco, utilizza un alias.
- WHERE condition
-
Clausola facoltativa che limita gli aggiornamenti alle righe che corrispondono a una condizione. Quando la condizione restituisce
true
, le colonne SET specificate vengono aggiornate. La condizione può essere un semplice predicato su una colonna o una condizione basata sul risultato di una sottoquery.Puoi nominare qualsiasi tabella nella sottoquery, inclusa la tabella di destinazione per UPDATE.
Note per l'utilizzo
Dopo aver aggiornato un numero elevato di righe in una tabella:
-
Applica l'operazione di vacuum alla tabella per recuperare spazio di memorizzazione e riordinare le righe.
-
Analizza la tabella per aggiornare le statistiche del pianificatore di query.
Gli outer join sinistra, destra e completi non sono supportati nella clausola FROM di un'istruzione UPDATE e restituiscono il seguente errore:
ERROR: Target table must be part of an equijoin predicate
Se è necessario specificare un outer join, utilizza una sottoquery nella clausola WHERE dell'istruzione UPDATE.
Se l'istruzione UPDATE richiede un self join alla tabella di destinazione, è necessario specificare la condizione di join e i criteri della clausola WHERE che qualificano le righe per l'operazione di aggiornamento. In generale, quando la tabella di destinazione viene unita a se stessa o a un'altra tabella, una best practice è utilizzare una sottoquery che separa chiaramente le condizioni di join dai criteri che qualificano le righe per gli aggiornamenti.
Le query UPDATE con più corrispondenze per riga generano un errore quando il parametro di configurazione error_on_nondeterministic_update
è impostato su true. Per ulteriori informazioni, consulta error_on_nondeterministic_update.
Puoi aggiornare una colonna GENERATED BY DEFAULT AS IDENTITY. Le colonne definite come GENERATED BY DEFAULT AS IDENTITY possono essere aggiornate con i valori forniti. Per ulteriori informazioni, consulta GENERATED BY DEFAULT AS IDENTITY.