Comando UPDATE
Usando o perigoso comando UPDATE
Chegamos ao ponto de inflexão de qualquer carreira na área de tecnologia: o primeiro contato com o comando UPDATE. Ele é usado para modificar dados que já existem na tabela. Parece simples, mas é também o responsável por alguns dos maiores pesadelos (e noites em claro) da TI moderna.
Se no INSERT estamos adicionando uma nova folha no livro, com o UPDATE estamos apagando uma palavra e escrevendo por cima. Se não tivermos cuidado, podemos apagar a página inteira.
A Sintaxe do UPDATE
O comando requer três partes essenciais para não causar tragédias: qual tabela será atualizada, o que será alterado (SET) e quem sofrerá a alteração (WHERE).
Caso de Uso: Um cliente mudou de cidade e precisamos atualizar seu endereço.
UPDATE Clientes
SET Cidade = 'Florianópolis'
WHERE IDCliente = 1450;
A estrutura é clara:
1. UPDATE Clientes: Qual tabela?
2. SET Cidade = 'Florianópolis': Qual coluna e seu novo valor?
3. WHERE IDCliente = 1450: O filtro restritivo. Nunca esqueça desta parte.
O Perigo Invisível: O UPDATE sem WHERE
O maior perigo do comando UPDATE é que, sintaticamente, a cláusula WHERE é opcional. Se você executar o comando sem ela, o banco de dados assumirá alegremente que você deseja aplicar a alteração a todas as linhas da tabela.
Se você rodar o comando abaixo:
-- EXEMPLO DE CÓDIGO PERIGOSO, NÃO EXECUTE
UPDATE Clientes
SET Cidade = 'Florianópolis';
Parabéns! Todos os 5 milhões de clientes do seu sistema agora moram em Florianópolis.
Boas Práticas para evitar desastres
- Faça um SELECT antes: Antes de escrever a palavra
UPDATE, escreva umSELECTcom o seu filtroWHEREpara garantir que as linhas retornadas são exatamente as que você deseja alterar.
```sql -- Passo 1: Validação SELECT * FROM Clientes WHERE IDCliente = 1450;
-- Passo 2: Se ok, rode o UPDATE UPDATE Clientes SET Cidade = 'Florianópolis' WHERE IDCliente = 1450; ```
- Use Transações (BEGIN TRAN): O SQL Server permite testar alterações e revertê-las caso você cometa um erro, através do gerenciamento de transações.
```sql BEGIN TRAN; -- Inicia o "modo rascunho"
UPDATE Clientes SET Ativo = 0 WHERE Cidade = 'Curitiba';
-- Se o número de linhas afetadas estiver correto, confirme: COMMIT TRAN; -- Se fez besteira, cancele e restaure: -- ROLLBACK TRAN; ```
Atualizando com base em outra tabela (UPDATE com JOIN)
Você também pode atualizar registros em uma tabela usando informações vindas de outra.
Caso de Uso: Atualizar o preço dos produtos na tabela Produtos com base em uma nova tabela de reajuste chamada TabelaPrecos2024.
UPDATE P
SET P.PrecoAtual = T.NovoPreco
FROM Produtos P
INNER JOIN TabelaPrecos2024 T ON P.IDProduto = T.IDProduto;
Conclusão
O UPDATE é uma faca afiada que requer técnica e respeito. Ao adotar a prática das transações e sempre validar sua cláusula WHERE, você garantirá a integridade dos dados da sua empresa. Na Parte 4 (a última desta série), exploraremos o temido comando DELETE.
Glossário de Termos
- UPDATE: Comando DML utilizado para modificar informações que já estão armazenadas no banco de dados.
- SET: Cláusula que define quais colunas serão alteradas e quais serão os seus novos valores durante um UPDATE.
- BEGIN TRAN / COMMIT TRAN / ROLLBACK TRAN: Comandos de controle de transação que criam um "ambiente seguro", permitindo efetivar as mudanças (COMMIT) ou desfazê-las (ROLLBACK) caso algo dê errado.
Referências
- BEN-GAN, Itzik. (2016). T-SQL Fundamentals. Microsoft Press.
- KLINE, K. (2004). SQL in a Nutshell. O'Reilly Media.