UPDATE
Sintassi
Sintassi per una singola tabella:
UPDATE [LOW_PRIORITY] [IGNORE] tabella SET nome_col1={espr1|DEFAULT} [, nome_col2={espr2|DEFAULT}] ... [WHERE condizione_where] [ORDER BY ...] [LIMIT numero]
Sintassi multi-tabella:
UPDATE [LOW_PRIORITY] [IGNORE] tabella SET nome_col1={espr1|DEFAULT} [, nome_col2={espr2|DEFAULT}] ... [WHERE condizione_where]
Spiegazione
Con la sintassi a tabella singola, l'istruzione UPDATE
aggiorna le colonne delle righe esistenti nella tabella specificata, inserendo i nuovi valori. La clausola SET
indica quali colonne modificare e i valori che dovranno essere inseriti. Ad ogni valore può essere assegnata un'espressione, o la parola chiave DEFAULT
per assegnare esplicitamente a un campo il suo valore di default. La clausola WHERE
, se presente, specifica le condizioni che identificano le righe da aggiornare. Senza la clausola WHERE
, verranno aggiornate tutte le righe. Se è la clausola ORDER BY
è presente, le righe vengono aggiornate nell'ordine specificato. La clausola LIMIT
pone un limite al numero di righe da aggiornare.
Con la sintassi multi-tabella, UPDATE
aggiorna le righe che soddisfano le condizioni, in tutte le tabelle specificate. In questo caso, non è possibile utilizzare ORDER BY
e LIMIT
.
condizione_where
è un'espressione che viene valutata riga per riga e, se risulta vera, la riga viene aggiornata.
tabella
e condizione_where
devono essere specificate come spiegato nella pagina SELECT
.
E' necessario il privilegio UPDATE
solo per le colonne nominate nella update UPDATE
che verranno effettivamente modificate. Per le altre colonne, che vengono lette ma non modificate, è sufficiente il permesso SELECT
. Si veda GRANT
.
L'istruzione UPDATE
supporta i seguenti modificatori:
- Se si usa la parola chiave
LOW_PRIORITY
, l'esecuzione dellaUPDATE
è ritardato fino a quando non ci saranno più client a leggere la tabella. Questo ha effetto solo per gli Storage Engine che utilizzano il lock a livello di tabella (MyISAM, MEMORY, MERGE). - Se si utilizza la parola chiave
IGNORE
, l'istruzione non si arresta nel caso in cui degli errori si verifichino durante le modifiche. Le righe per le quali si verificano conflitti di chiave duplicata, non vengono aggiornate. Le righe per le quali si tenta di aggiornare i valori provocando un errore di conversione, vengono aggiornatte al valore valido più vicino.