Sintaxe UPDATE


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 MariaDB notará isto é não irá atualizá-la.

UPDATE retorna o número de linhas que forma realmente alteradas. Desde o MariaDB v3.22, 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 MariaDB versão 3.23, você pode utilizar LIMIT row_count para restringir o escopo do UPDATE. Uma cláusula LIMIT funciona da seguinte forma:

Se uma cláusula ORDER BY é utilizada (disponível no MariaDB 4.0.0), as linhas serão atualizadas nesta ordem. Isto só é util em conjunto com LIMIT.

A partir da MariaDB 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.

Retornar