Certificações ProfissionaisCursos e Qualificações

UPDATE sem WHERE: o que acontece e como evitar alterações indesejadas

Entenda o que um DELETE sem WHERE pode atingir, como o filtro define as linhas excluídas e o que revisar antes de executar o comando.



  • Sem WHERE, todas as linhas são alvo da expressão definida em SET.
  • Uma atualização global é intencional quando toda a tabela corresponde ao conjunto pretendido.
  • Um SELECT com a mesma condição permite conferir os registros antes do UPDATE.
  • Modos seguros no MySQL e triggers personalizadas no SQL Server têm condições e limites próprios.
  • Com suporte à transação utilizada, ROLLBACK desfaz alterações ainda não confirmadas.

Um UPDATE sem WHERE aplica a expressão definida em SET a todas as linhas da tabela, porque não existe critério de filtro.

A cláusula WHERE não é uma exigência sintática universal: sua ausência não torna o comando necessariamente inválido.

Esse alcance corresponde tanto a uma atualização global planejada quanto ao resultado de um filtro esquecido. Antes de executar, confirme quais registros precisam receber a alteração e confira a condição com um SELECT.

Como SET e WHERE definem a alteração?

Para uma atualização com filtro, a estrutura habitual é UPDATE tabela SET coluna = valor WHERE condição. UPDATE indica a tabela, SET define a atribuição de valores e WHERE seleciona as linhas pela condição informada.

No exemplo ilustrativo abaixo, a intenção é definir o preço dos produtos da categoria papelaria como 10. Os nomes de tabela e colunas precisam ser adaptados ao banco em uso.

Teste vocacional

Qual carreira combina com o seu perfil?

Responda as perguntas e descubra o curso certo e as bolsas ideais para você!
UPDATE produtos
SET preco = 10
WHERE categoria = 'papelaria';

Com esse filtro, a atribuição alcança apenas os produtos da categoria informada. Ao remover WHERE, a mesma alteração definida em SET passa a alcançar todas as linhas:

UPDATE produtos
SET preco = 10;

Todas as linhas passam a ser alvo da atribuição preco = 10. Isso não significa que todos os valores finais serão diferentes dos anteriores: um produto cujo preço já era 10 continua com esse valor.

Atualização global intencional ou omissão do WHERE

O comando UPDATE produtos SET preco = 10; tem o mesmo alcance nos dois cenários. A diferença está no conjunto que se pretendia atualizar: toda a tabela ou apenas parte dela.

CritérioAtualização global intencionalOmissão do WHERE
IntençãoAplicar a atribuição a todas as linhasAplicar a atribuição a um subconjunto, mas o filtro ficou de fora
Correspondência com a intençãoToda a tabela é o alvo pretendidoO comando alcança linhas fora do subconjunto pretendido
Conferência antes de executarConfirmar que a atribuição definida em SET é desejada para toda a tabelaIncluir a condição pretendida e conferir os registros com SELECT

Uma atualização global planejada também exige revisão. Confirmar que todas as linhas são o alvo não substitui a conferência da coluna e do valor definidos em SET.

Como conferir os registros com SELECT antes do UPDATE

Execute um SELECT com a mesma condição do UPDATE para conferir os registros selecionados. No exemplo, mantenha categoria = 'papelaria' nas duas instruções.

-- Execute primeiro para conferir os registros
SELECT *
FROM produtos
WHERE categoria = 'papelaria';

-- Execute separadamente, depois de revisar o retorno
UPDATE produtos
SET preco = 10
WHERE categoria = 'papelaria';

Leia o retorno do SELECT e compare os produtos selecionados com os que precisam receber o novo preço. Se o conjunto estiver diferente do esperado, ajuste a condição e repita a consulta antes de executar o UPDATE.

A conferência é uma verificação prévia dos registros retornados, não uma garantia absoluta sobre uma execução posterior. Use o resultado para revisar a condição, sem tratar a consulta como autorização automática para atualizar.

Antes de executar:

  • Revise a tabela, a coluna e o valor definidos no comando.
  • Se a intenção for filtrar, confirme que WHERE está presente e corresponde à condição pretendida. Revise a condição mais de uma vez.
  • Execute o SELECT com a mesma condição e confira os registros retornados, não apenas sua quantidade.
  • Se a atualização for global, confirme que a atribuição é desejada para toda a tabela.
  • Teste a alteração em uma base de testes e valide com o solicitante antes de executar em produção.

Proteções por banco e o papel da transação

Os recursos de proteção variam entre bancos. Um bloqueio preventivo, uma trigger personalizada e uma transação têm funções diferentes: impedir determinadas operações, aplicar uma regra de bloqueio ou controlar a confirmação das alterações.

Uma trigger é uma rotina vinculada a eventos de alteração de dados. O exemplo abaixo usa uma trigger de DML, isto é, associada à manipulação dos dados de uma tabela.

RecursoAplicaçãoAlcanceLimite
Modo seguroMySQLPode ajudar a impedir determinadas atualizaçõesConfira as condições de bloqueio na documentação da versão e da configuração em uso; não presuma o bloqueio de qualquer UPDATE sem WHERE
Trigger personalizadaSQL ServerEste exemplo de trigger para barrar alterações na tabela inteira compara as linhas atingidas com o total da tabela e executa ROLLBACK ao atingir esse totalExige implementação vinculada à tabela. O critério é a quantidade de linhas atingidas, não a presença ou ausência de WHERE
TransaçãoCom suporte do banco e da operação à transação utilizadaPermite conferir o resultado e desfazer alterações ainda não confirmadasROLLBACK não desfaz alterações já confirmadas nessa transação

Uma transação agrupa operações para confirmação ou reversão. O comando de início, como BEGIN ou BEGIN TRANSACTION, varia conforme o banco. COMMIT confirma as alterações; ROLLBACK desfaz as alterações pertencentes à transação ainda não confirmada.

O script ilustrativo a seguir pressupõe suporte à transação e exige adaptação da sintaxe ao banco em uso. Ele mantém a atualização global do exemplo para mostrar o controle antes da confirmação.

BEGIN TRANSACTION;

UPDATE produtos
SET preco = 10;

-- Conferência do resultado dentro da transação
SELECT *
FROM produtos;

-- Este exemplo desfaz a alteração
ROLLBACK;

-- Alternativa de confirmação, não executada neste exemplo:
-- COMMIT;

O exemplo executa ROLLBACK e deixa COMMIT comentado. A decisão entre confirmar e desfazer ocorre depois da conferência; não execute as duas alternativas como se fossem uma sequência de confirmação.

Perguntas frequentes sobre UPDATE sem WHERE

Qual a finalidade do comando UPDATE?

UPDATE altera valores existentes em uma ou mais colunas de uma tabela. SET define a atribuição, e WHERE, quando incluído, filtra as linhas pela condição informada.

Como fazer um UPDATE?

Para uma atualização com filtro, uma estrutura habitual é UPDATE tabela SET coluna = valor WHERE condição. Adapte os nomes e valores ao banco e confira os registros com um SELECT usando a mesma condição antes de executar.

O que acontece quando um UPDATE é executado sem WHERE?

A expressão definida em SET é aplicada a todas as linhas da tabela. Todas são alvo da atribuição, mesmo que alguns valores finais permaneçam iguais aos anteriores.

UPDATE sem WHERE é sempre um erro?

Não. Ele também serve para uma atualização global intencional. Há uma alteração indesejada quando o conjunto atingido não corresponde ao pretendido.

Como conferir quais linhas serão alteradas antes de executar?

Execute um SELECT com a mesma condição prevista para o UPDATE. Leia os registros retornados e compare esse conjunto com o que precisa receber a alteração.

É possível desfazer um UPDATE sem WHERE?

Com suporte do banco e da operação à transação utilizada, ROLLBACK permite desfazer a alteração pertencente a uma transação ainda não confirmada. Ele não desfaz alterações já confirmadas nessa transação.

Como impedir que um UPDATE sem WHERE altere a tabela inteira?

No MySQL, modos seguros podem ajudar a impedir determinadas atualizações, conforme as condições de bloqueio em uso. No SQL Server, o exemplo de trigger personalizada descrito acima barra operações pelo total de linhas atingidas e exige vínculo com cada tabela protegida. Revise também o filtro e confira os registros com SELECT.

O UPDATE se comporta igual em todos os bancos de dados?

Há diferenças de sintaxe e de recursos entre implementações. O suporte a ORDER BY e LIMIT e as condições dos mecanismos de proteção exigem conferência na documentação do banco em uso.

Construa sua carreira em tecnologia com formações alinhadas ao mercado

Se você quer ingressar ou crescer no mercado da tecnologia, a Allevo Tech oferece formações práticas em áreas de alta demanda, como Engenharia de Software, Ciência de Dados e Inteligência Artificial.

As trilhas são estruturadas para desenvolver competências técnicas e preparar você para os desafios do mercado de trabalho.

Clique no botão abaixo e conheça as formações da Allevo Tech que podem impulsionar a sua trajetória profissional.

Logo do Querobolsa

Gostando da matéria?

Inscreva-se e receba nossos principais posts no seu e-mail

Banner FOQA Últimas Notícias

Revista Vídeos

As profissões mais bem pagas em 2026

Postado em 31/03/2026

Como estudar pro ENEM 2026 do ZERO

Postado em 23/04/2026


Pronto para estudar pagando menos?

Bolsas de até 80% de desconto em milhares de faculdades por todo o Brasil.
Encontrar minha bolsa