Ano: 2015 Banca: FCC Órgão: CNMP Prova: Analista do CNMP - Desenvolvimento de Sistemas
No Oracle um trigger é um bloco PL/SQL armazenado no banco de dados e acionado (executado) em resposta a um evento especificado. Nesse contexto, observe o trigger a seguir:

CREATE OR REPLACE TRIGGER restringir_salario  
BEFORE INSERT OR UPDATE OF salario ON empregados  
FOR EACH ROW  
BEGIN
   IF NOT (:NEW.id_emp IN ('PRES', 'DIRE'))
      AND :NEW.salario > 5000 THEN
      RAISE_APPLICATION_ERROR (-20202,'Funcionário não pode ganhar mais que R$ 5000');
   END IF;
 END;

Considere que:

− A tabela empregados contém os campos citados no trigger;
− O banco de dados está aberto e funcionando em condições ideais;
− O funcionário cujo sobrenome é Souza possui como id_emp o valor 'VEND'.

Ao se executar a instrução UPDATE empregados SET salario = 5500 WHERE sobrenome='Souza'; é correto afirmar que
A
a condição do trigger será violada, pois somente empregados cujo id_emp não seja 'PRES' ou 'DIRE' poderão receber salário de mais de 5000.
B
a operação de atualização será executada com sucesso, pois o trigger não restringe a entrada de valores maiores que 5000.
C
a condição do trigger será violada, pois apenas empregados cujo id_emp seja 'PRES' ou 'DIRE' poderão ter o campo salario alterado.
D
a operação de atualização será bem sucedida, pois a condição especificada no trigger não é violada por instruções do tipo UPDATE.
E
o trigger gera uma exceção, exibindo a mensagem 'Funcionário não pode ganhar mais que R$ 5000'.