FC ConcursosFC Concursos

Questão FC369603

No contexto do ambiente MySQL, considere o script abaixo. CREATE DEFINER= '... ' TRIGGER banco.exemplo AFTER UPDATE ON banco.t1 FOR EACH ROW BEGIN INSERT into t2 VALUES (user(), CO

Sistema de Gerenciamento de Banco de Dados (SGBD)

FGV · 2024

No contexto do ambiente MySQL, considere o script abaixo.

 

CREATE
   DEFINER= '... '
   TRIGGER banco.exemplo
   AFTER UPDATE ON banco.t1 FOR EACH ROW
BEGIN
   INSERT into t2 VALUES
     (user(),
     CONCAT('Nome’, OLD.nome, NEW.nome)
     );
END

 

De acordo com o que foi apresentado, conclui-se que:

  1. é gravado um registro na tabela t2 para todas as alterações de reescrita em t1;
  2. há um erro, pois a cláusula “FOR EACH ROW” não se aplica nesse caso;
  3. há um erro, pois OLD e NEW não foram devidamente declarados;
  4. são inseridos na tabela t2 todos os nomes presentes na tabela t1;
  5. são registradas na tabela t2 somente as operações de reescrita que alteraram o conteúdo da coluna nome de t1.
Mostrar resposta e comentário

Gabarito

A

Comentário do professor

O script define um TRIGGER associado a AFTER UPDATE em banco.t1 com a cláusula FOR EACH ROW. Isso significa que o bloco é executado após cada alteração de linha realizada em t1.

No corpo do trigger há um INSERT em t2 que grava dois valores: user() (usuário que executou a operação) e o resultado de CONCAT envolvendo OLD.nome e NEW.nome. As variáveis OLD e NEW representam, respectivamente, os dados antes e depois da atualização.

Portanto, para toda linha que for atualizada em t1 o trigger insere um registro correspondente em t2, registrando quem fez a alteração e os valores antigos/novos do campo nome.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo