Questão FC372985
Em um Oracle Database, um profissional de TI deseja criar uma trigger chamada Atualiza_salario_func, com o objetivo de exibir as diferenças entre o novo (NEW.salarioFunc) e o antig
Sistema de Gerenciamento de Banco de Dados (SGBD)
FCC · 2018
Em um Oracle Database, um profissional de TI deseja criar uma trigger chamada Atualiza_salario_func, com o objetivo de exibir as diferenças entre o novo (NEW.salarioFunc) e o antigo salário (OLD.salarioFunc) constantes da tabela de funcionários. Para tanto, ele escreveu o seguinte código:
CREATE TRIGGER Atualiza_salario_func
BEFORE ..I.. ON ..II..
FOR EACH ROW
WHEN (NEW.CODFUNC > 0)
DECLARE
diferenca_salario number;
BEGIN
diferenca_salario := :NEW.salarioFunc - :OLD.salarioFunc;
dbms_output.put('Salário antigo:' || :OLD.salarioFunc);
dbms_output.put('Salário novo:' || :NEW.salarioFunc);
dbms_output.put_line(' A diferença de salário foi de: ' || diferenca_salario);
END;
/
As lacunas I e II devem especificar, correta e respectivamente, os elementos genéricos
- condition e database_name.
- triggering_event e column_name.
- column_event e table_name.
- row_event e column_name.
- triggering_event e table_name.
Mostrar resposta e comentário
Gabarito
Errado
Comentário do professor
A lacuna I deve ser preenchida pelo triggering_event, ou seja, a especificação do evento que acionará o gatilho (tempo e ação): por exemplo BEFORE ou AFTER combinados com INSERT, UPDATE ou DELETE. É essa parte que define quando e por qual operação a trigger será disparada.
A lacuna II corresponde ao table_name, o nome da tabela após a cláusula ON à qual o gatilho está associado (por exemplo ON FUNCIONARIOS).
Na prática, a declaração fica assim:
CREATE TRIGGER nome BEFORE UPDATE ON FUNCIONARIOS FOR EACH ROW ...
Dentro do corpo, a diferença salarial é calculada por \(diferenca := :NEW.salarioFunc - :OLD.salarioFunc\), usando os registros :NEW e :OLD disponíveis em triggers por linha.
Conteúdo do catálogo FC Concursos · Atualizado em