La consigna pide que se actualice las edades de los clientes, en la tabla de clientes. Sin embargo con la solución dada:
DELIMITER //
CREATE TRIGGER TG_EDAD_CLIENTES_INSERT
BEFORE INSERT ON tb_cliente
FOR EACH ROW BEGIN
SET NEW.EDAD = timestampdiff(YEAR, NEW.FECHA_NACIMIENTO, NOW());
END //
Lo hace sólo con el nuevo registro insertado. Probé haciendo un update sobre la misma tabla:
DELIMITER //
CREATE TRIGGER TG_EDAD_CLIENTES_INSERT
BEFORE INSERT ON tb_cliente
FOR EACH ROW BEGIN
UPDATE tb_cliente
SET EDAD = timestampdiff(YEAR, FECHA_NACIMIENTO, NOW());
END //
pero me tira el error: "Error Code: 1442. Can't update table 'tb_cliente' in stored function/trigger because it is already used by statement which invoked this stored function/trigger."
Supongo que no se puede hacer un update sobre la misma tabla que se hace el insert. O hay otra manera de hacerlo.