Trigger PL/SQL no Oracle: Sintaxe BEFORE e Referência :NEW
Gabarito: letra E. A trigger é do tipo BEFORE (acionada antes do INSERT ou UPDATE) e, para acessar os novos valores em uma trigger de nível de linha (FOR EACH ROW), utiliza-se o prefixo :NEW seguido do nome da coluna. Portanto, o preenchimento correto é BEFORE na lacuna I e :new.id_cand, :new.num_vot na lacuna II.
A banca testa o conhecimento da sintaxe de triggers Oracle, especialmente:
O momento de disparo: BEFORE (antes do evento), AFTER (depois) ou INSTEAD OF (no lugar, usado em views).
A referência a valores de linha: :NEW para o novo valor (INSERT/UPDATE) e :OLD para o antigo (UPDATE/DELETE).
Alternativa A — ❌ Incorreta
INSTEAD OF não é válido para tabelas comuns (apenas para views). Além disso, faltou o prefixo : nos nomes das colunas (id_cand em vez de :new.id_cand).
Alternativa B — ❌ Incorreta
Continua usando INSTEAD OF, que é inadequado. Embora traga new.id_cand, falta o : — a sintaxe correta é :new.id_cand, com o prefixo obrigatório para variáveis de trigger.
Alternativa C — ❌ Incorreta
PRIOR é um operador usado em consultas hierárquicas (com CONNECT BY), não é uma cláusula de momento de trigger. Apesar de :new.id_cand, :new.num_vot estar correto, o momento está errado.
Alternativa D — ❌ Incorreta
BEFORE está correto quanto ao momento, mas a referência às colunas está sem o prefixo : (new id_cand em vez de :new.id_cand). No Oracle, o prefixo é obrigatório para acessar os valores :NEW e :OLD.
Alternativa E — ✅ Correta ⟵ GABARITO
BEFORE + :new.id_cand, :new.num_vot. A sintaxe atende exatamente ao que o enunciado pede: trigger acionada antes de INSERT/UPDATE, e os parâmetros do procedure recebem os novos valores da linha sendo inserida/atualizada.
Gabarito: letra E.