Pular para o conteúdo principal

Questão de Banco de Dados — SQL — FGV 2024

Banco de DadosSQL
Código
fg077077
Banca
FGV
Órgão
CGM de Belo Horizonte - MG
Ano
2024
Nível
Superior
Cargo
Auditor Interno - Ciência da Computação - Manhã
Um trigger assemelha-se a um procedimento armazenado que é invocado automaticamente, sempre que ocorre um evento previamente especificado.Sobre os diversos tipos de triggers no PL/SQL do SGBD Oracle, analise as afirmativas a seguir e assinale (V) para a verdadeira e (F) para a falsa.( ) Se o trigger for criado em uma tabela ou visão, o evento de gatilho será composto de instruções SQL do tipo DDL e será chamado de trigger de transição cruzada.( ) Um trigger condicional pode ser um trigger do tipo DML ou de sistema que possui uma cláusula WHEN que especifica uma condição SQL que avalia para cada linha afetada pelas instruções presentes no trigger.( ) Quando um trigger é acionado, as tabelas às quais ele faz referência podem estar passando por alterações feitas por instruções SQL nas transações iniciadas por outros usuários. As instruções SQL executadas com prioridade em relação as instruções SQL independentes.As afirmativas são, respectivamente,
  1. AV – V – F.
  2. BV – F – V.
  3. CF – V – F.
  4. DF – F – V.
Revelar gabarito e comentário

GabaritoC — F – V – F.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Triggers no Oracle PL/SQL

Gabarito: letra C — F, V, F. A primeira afirmativa é falsa porque triggers em tabelas/visões respondem a eventos DML (INSERT, UPDATE, DELETE), não DDL, e o termo "transição cruzada" não é um tipo reconhecido. A segunda é verdadeira: triggers condicionais (DML ou de sistema) podem usar a cláusula WHEN para avaliar condições por linha. A terceira é falsa: triggers executam na mesma transação do evento, sem prioridade sobre instruções SQL independentes.

A banca testa a diferenciação entre tipos de trigger (DML, DDL, sistema) e o funcionamento de condicionais. O material de apoio confirma que triggers em tabelas são DML; já triggers DDL são ligados ao banco/esquema.

Triggers no Oracle
  • 1Por evento
    • DML (INSERT, UPDATE, DELETE)
      • Em tabelas/visões
    • DDL (CREATE, ALTER, DROP)
      • No banco/esquema
    • De sistema
      • Eventos do banco
  • 2Por condição
    • Condicional (cláusula WHEN)
      • Avalia por linha (DML row-level)
      • Avalia no evento (sistema)
    • Não condicional
  • 3Por transação
    • Mesma transação do evento
    • Sem prioridade sobre outras SQL
LEVEL · soulevel.com.br

Afirmativa I — ❌ Falsa

A afirmativa alega que triggers criados em tabela ou visão têm evento composto por instruções DDL e são chamados de "trigger de transição cruzada”. Há dois erros: (1) triggers em tabelas/visões são acionados por comandos DML (INSERT, UPDATE, DELETE), não DDL; (2) não existe no Oracle o tipo "trigger de transição cruzada". Eventos DDL (CREATE, ALTER, DROP) disparam triggers DDL, mas estes não estão associados a uma tabela/visão específica.

Afirmativa II — ✅ Verdadeira

Um trigger condicional é aquele que possui uma cláusula WHEN, a qual especifica uma condição SQL avaliada para cada linha afetada (no caso de triggers DML row-level) ou para o evento (no caso de triggers de sistema). Embora a cláusula WHEN seja mais comum em triggers DML row-level, a documentação do Oracle também a permite em alguns triggers de sistema (ex.: CREATE antes de certos eventos). Assim, a afirmativa está correta no contexto geral.

Afirmativa III — ❌ Falsa

Triggers executam dentro da mesma transação que originou o evento; eles não têm qualquer prioridade sobre instruções SQL independentes. A afirmação de que "as instruções SQL executadas com prioridade" é incorreta. As operações do trigger seguem o mesmo isolamento transacional e não são privilegiadas.

Alternativa A (V-V-F) — ❌ Incorreta

A sequência V-V-F coloca a primeira afirmativa como verdadeira, quando na realidade é falsa (trigger de tabela não é DDL). Portanto, incorreta.

Alternativa B (V-F-V) — ❌ Incorreta

Erra ao considerar a primeira verdadeira e a terceira verdadeira. A primeira é falsa (já explicado) e a terceira também é falsa (não há prioridade).

Alternativa C (F-V-F) — ✅ Correta ⟵ GABARITO

Sequência que reflete corretamente a realidade: primeira falsa, segunda verdadeira, terceira falsa.

Alternativa D (F-F-V) — ❌ Incorreta

Erra ao considerar a segunda afirmativa falsa e a terceira verdadeira. A segunda é verdadeira (condicional com WHEN é válido) e a terceira é falsa.

NÃO CAIA NESSA!

A banca troca DML por DDL na primeira afirmativa e inventa o termo "transição cruzada" — nome que não existe na documentação Oracle. Na terceira, insere a ideia de "prioridade" que não procede. Lembre-se: triggers em tabelas são DML; DDL triggers são a nível de banco/esquema. A execução é sempre na mesma transação.

Conclusão: A sequência correta é F, V, F, portanto o gabarito é a letra C.

Link permanente: /questoes/fg077077