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

Só para tirar uma dúvida

No exercício, pede para toda vez que a tabela clientes for modificada, atualize as idades de todos . Com isso eu criei uma trigger que quando fizer alguma inserção, alteração ou deletar, da um update e atualiza todas as idades dos clientes. Mas quando fui rodar, tive o seguinte erro : Can't update table 'clientes' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.. Aí fui pesquisar e descobri que não conseguimos definir updates nos gatilhos. Então foi por esse motivo que o exercício tem essa solução?:

DELIMITER //

CREATE TRIGGER TG_CLIENTES_IDADE_INSERT BEFORE INSERT ON CLIENTES

FOR EACH ROW

BEGIN

SET NEW.IDADE = timestampdiff(YEAR, NEW.DATA_NASCIMENTO, NOW());

END//

Pois eu reparei que esse código não altera todos os registros.

1 resposta
solução!

Olá, Tiago, tudo bem?

Peço desculpas pela demora no retorno.

Isso mesmo Tiago, não se pode utilizar um comando UPDATE em uma trigger onde a tabela a ser atualizada é a mesma que sofrerá a ação para acionar a trigger, neste caso a tabela de clientes, então, utilizamos o comando SET atualizando apenas os novos registros a serem inseridos na tabela.

Qualquer dúvida é só falar e bons estudos!