UPDATE [LOW_PRIORITY] [IGNORE] nome_tabela
SET nome_coluna1=expr1 [, nome_coluna2=expr2 ...]
[WHERE definição_where]
[ORDER BY ...]
[LIMIT row_count]
ou
UPDATE [LOW_PRIORITY] [IGNORE] nome_tabela [, nome_tabela ...]
SET nome_coluna1=expr1 [, nome_coluna2=expr2 ...]
[WHERE definição_where]
UPDATE atualiza uma coluna em registros de
tabelas existentes com novos valores. A cláusula
SET indica quais colunas modificar e os
valores que devem ser dados. A cláusula
WHEREi, se dada, especifica quais linhas
devem ser atualizadas. Senão todas as linhas são atualizadas.
Se a cláusula ORDER BY é especificada, as
linhas serão atualizada na ordem especificada.
Se você especificar a palavra-chave
LOW_PRIORITY, a execução de
UPDATE e atrasada até que nenhum outro
cliente esteja lendo da tabela.
Se você especificar a palavra-chave IGNORE,
a instrução não será abortada memso se nós obtermos erros
de chaves duplicadas durante a atualização. Linhas que causem
conflitos não serão atualizadas.
Se você acessa um coluna de nome_tabela em
uma expressão, UPDATE utiliza o valor atual
da coluna. Por exemplo, a seguinte instrução define a coluna
age com o valor atual mais um:
mysql> UPDATE persondata SET age=age+1;
Atribuiçãoes UPDATE são avaliadas da
esquerda para a direitat. Por exemplo, a seguinte instrução
dobra a coluna age e então a incrementa:
mysql> UPDATE persondata SET age=age*2, age=age+1;
Se você define uma coluna ao valor que ela possui atualmente, o MySQL notará isto é não irá atualizá-la.
UPDATE retorna o número de linhas que forma
realmente alteradas. No MySQL Versão 3.22 ou posterior, a
função mysql_info() da API C retorna o
número de linhas encontradas e atualizadas e o número de
avisos que ocorreram durante o UPDATE.
A partir do MySQL versão 3.23, você pode utilizar
LIMIT row_count para restringir o escopo do
UPDATE. Uma cláusula
LIMIT funciona da seguinte forma:
Antes do MySQL 4.0.13, LIMIT é uma
restrição que afeta as linhas. A instrução para assim
que altera row_count linhas que
satisfaçam a cláusula WHERE.
Da versão 4.0.13 em diante, LIMIT é uma
restrição de linhas correspondentes. A instrução para
assim que ela encontrar row_count linhas
que satisfaçam a cláusula WHERE, tendo
elas sido alteradas ou não.
Se uma cláusula ORDER BY é utilizada
(disponível no MySQL 4.0.0), as linhas serão atualizadas nesta
ordem. Isto só é util em conjunto com
LIMIT.
A partir da MySQL Versão 4.0.4, você também pode realizar
operações UPDATE que cobrem múltiplas
tabelas:
UPDATE items,month SET items.price=month.price WHERE items.id=month.id;
O exemplo mostra um inner join usando o operador de vírgula,
mas instruções UPDATE multi-tabelas podem
usar qualquer tipo de join permitida na instrução
SELECT, como LEFT JOIN.
Nota: você não pode utilizar ORDER BY ou
LIMIT com multi-tabelas
UPDATE.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
