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:
- é gravado um registro na tabela t2 para todas as alterações de reescrita em t1;
- há um erro, pois a cláusula “FOR EACH ROW” não se aplica nesse caso;
- há um erro, pois OLD e NEW não foram devidamente declarados;
- são inseridos na tabela t2 todos os nomes presentes na tabela t1;
- 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