Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Solução simples sem acrescentar novas variáveis

DECLARE @CPF VARCHAR(15);
DECLARE @DATA_NASCIMENTO DATE;
DECLARE @IDADE INT;

SET @CPF = '1471156710';

SELECT @DATA_NASCIMENTO = [DATA DE NASCIMENTO] 
FROM [TABELA DE CLIENTES] 
WHERE CPF = @CPF;

SET @IDADE = DATEDIFF(YEAR, @DATA_NASCIMENTO, GETDATE());

IF @IDADE <> (SELECT IDADE FROM [TABELA DE CLIENTES] WHERE CPF = @CPF)
    UPDATE [TABELA DE CLIENTES] SET IDADE = @IDADE WHERE CPF = @CPF;

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

Oi, Ycaro! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

É isso aí! Gostei da forma como você usou o IF para verificar se o valor precisa mesmo ser atualizado antes de executar o UPDATE.

Uma dica interessante para o futuro é usar CASE dentro do UPDATE quando quiser atualizar várias colunas com condições diferentes em um único comando. Veja este exemplo:


UPDATE [TABELA_DE_CLIENTES]
SET IDADE = CASE 
    WHEN DATEDIFF(YEAR, [DATA_DE_NASCIMENTO], GETDATE()) <> IDADE 
    THEN DATEDIFF(YEAR, [DATA_DE_NASCIMENTO], GETDATE())
    ELSE IDADE 
END;

Esse código atualiza apenas quando há diferença entre as idades calculadas, sem precisar de um bloco IF separado.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!