Questão nº 46
Questão de Banco de Dados e Gestão da Informação · FGV SEFAZ-AM 2022 - Prova I (nº 46)
A respeito dos mecanismos de triggers do Oracle, analise as afirmativas a seguir.
I. A cláusula “OF nome_da_coluna” é usada para disparar o trigger somente quando a coluna específica tiver seu conteúdo alterado (updated).
II. A cláusula “WHEN” pode ser aplicada somente para trigger no nível de linha (row level).
III. A cláusula “REFERENCING OLD AS …” é aplicada somente para operações de inserção na tabela associada ao trigger.
Está correto o que se afirma em
- AI, somente.
- BI e II, somente. (alternativa correta)
- CI e III, somente.
- DII e III, somente.
- EI, II e III.
Resposta comentada
Gabarito Alternativa B
Triggers são programas especiais que são executados automaticamente (disparados) no banco de dados quando um evento específico acontece, como uma inserção, atualização ou exclusão de dados em uma tabela.
(A) Incorreta: A cláusula OF nome_da_coluna (ou FOR UPDATE OF nome_da_coluna) é usada para especificar que o trigger deve ser disparado somente quando as colunas listadas forem atualizadas, mas a afirmativa I está correta. A alternativa A diz "I, somente", o que implica que II e III estão incorretas. Como II está correta, A é incorreta.
(B) Correta:
- I. A cláusula “OF nome_da_coluna” é usada para disparar o trigger somente quando a coluna específica tiver seu conteúdo alterado (updated). Isso está correto. Ao criar um trigger
FOR UPDATE OF column_name, ele só será ativado se aquela coluna específica for modificada. - II. A cláusula “WHEN” pode ser aplicada somente para trigger no nível de linha (row level). Isso também está correto. A cláusula
WHENdefine uma condição adicional para o disparo do trigger e é exclusiva para triggersFOR EACH ROW(nível de linha), não podendo ser usada em triggers de nível de instrução.
(C) Incorreta: A afirmativa III está incorreta. A alternativa C diz "I e III, somente". Como III está incorreta, C é incorreta.
(D) Incorreta: A afirmativa III está incorreta. A alternativa D diz "II e III, somente". Como III está incorreta, D é incorreta.
(E) Incorreta: A afirmativa III está incorreta. A alternativa E diz "I, II e III". Como III está incorreta, E é incorreta.
Armadilha da banca na III: A cláusulaREFERENCING OLD AS ...é usada para acessar os valores de uma linha antes de uma operação DML. Em uma operação deINSERT(inserção), não existe um valor "antigo" (OLD), pois a linha está sendo criada. Portanto,OLDé aplicável aUPDATE(valores antes da atualização) eDELETE(valores da linha sendo excluída), e não aINSERT. A armadilha é sugerir queOLDse aplica aINSERT, o que é o oposto do que acontece.
Fonte: FGV SEFAZ-AM 2022 - Prova I Analista de Tecnologia da Informação da Fazenda Estadual (Caderno Tipo 1). Reproduzida para fins de estudo.