Pular para o conteúdo principal

Questão de Banco de Dados — Oracle — FCC 2016

Banco de DadosOracle
Código
fc028433
Banca
FCC
Órgão
CREMESP
Ano
2016
Nível
Superior
Cargo
Analista de Tecnologia da Informação - Banco de Dados
Considere as seguintes afirmações sobre triggers em Oracle.I. No Oracle 11g é possível criar um trigger desativado e depois ativá-lo somente quando se souber que ele será compilado com sucesso.II. Os triggers são acionados implicitamente pelo Oracle quando um evento de trigger ocorre, não importando qual usuário está conectado ou qual aplicação está sendo usada.III. O trigger de linha é disparado uma vez para o evento de trigger, mesmo que nenhuma linha seja afetada.IV. Podem ser criados triggers que sejam acionados sempre que instruções DDL (CREATE, ALTER ou DROP) ocorram no banco de dados.Está correto o que se afirma APENAS em
  1. AII e IV.
  2. BI e III.
  3. CI, II e IV.
  4. DIII e IV.
  5. EII e III.
Revelar gabarito e comentário

GabaritoC — I, II e IV.

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

Gabarito: letra C — estão corretos os itens I, II e IV. Apenas o item III é falso, pois triggers de linha (FOR EACH ROW) são disparados para cada linha afetada, e não disparam se nenhuma linha for modificada, ao contrário do que afirma o enunciado.

Triggers no Oracle
  • 1Quanto ao escopo
    • Linha (FOR EACH ROW)
      • Dispara por linha afetada
      • Nenhuma linha → nenhum disparo
    • Statement (nível de comando)
      • Dispara uma vez
      • Mesmo sem linhas afetadas
  • 2Quanto ao evento
    • DML (INSERT, UPDATE, DELETE)
    • DDL (CREATE, ALTER, DROP)
  • 3Quanto à ativação
    • Criado desativado (DISABLED)
    • Ativado com ALTER TRIGGER ... ENABLE
  • 4Acionamento
    • Implícito pelo Oracle
    • Independente de usuário/aplicação
LEVEL · soulevel.com.br

Item I — ✅ Correto

No Oracle 11g, é possível criar um trigger com status DISABLED (desativado) e posteriormente ativá-lo com o comando ALTER TRIGGER ... ENABLE. A compilação ocorre no momento da criação; se for bem-sucedida, o trigger pode ser ativado quando necessário.

Item II — ✅ Correto

Triggers são executados automaticamente (implicitamente) pelo Oracle quando o evento de trigger ocorre, independentemente do usuário conectado ou da aplicação em uso.

Item III — ❌ Incorreto

O trigger de linha (FOR EACH ROW) é disparado para cada linha afetada pela instrução DML. Se nenhuma linha for afetada, ele não é disparado. O comportamento de disparar uma vez independentemente de linhas é do trigger de statement (nível de comando), não do trigger de linha.

Item IV — ✅ Correto

O Oracle suporta triggers para eventos DDL, como CREATE, ALTER e DROP. Eles podem ser definidos no nível de banco de dados ou de esquema.

NÃO CAIA NESSA!

O item III inverte a característica do trigger de linha com o trigger de statement. Lembre-se: FOR EACH ROW dispara por linha; sem linhas afetadas, nenhum disparo. Já o trigger de statement dispara uma única vez, mesmo que zero linhas sejam modificadas.

Gabarito: letra C — itens I, II e IV corretos.

Link permanente: /questoes/fc028433