Minha resolução:
CREATE TRIGGER TG_CLIENTES_IDADE
ON [dbo].[CLIENTES]
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
UPDATE CLIENTES SET IDADE = (DATEDIFF(YEAR, [DATA_NASCIMENTO], GETDATE()))
WHERE IDADE <> (DATEDIFF(YEAR, [DATA_NASCIMENTO], GETDATE()))
END;
Não gostei muito da resolução mostrada, pois se o trigger dispara todas vez que existe um alteração na tabela clientes e o propio trigger gera uma alteração, ele vai continuar infinitamente, no meu eu coloquei o "where IDADE <> ((DATEDIFF(YEAR, [DATA_NASCIMENTO], GETDATE()))".
Dessa forma ele so vai fazer uma alteração se a idade estiver diferente do esperado, e quando todas as idades estiverem no esperado ele não faram mais nenhuma alteração. Ou o propio SQL server saca isso sozinho ?