Em um sistema de gerenciamento de banco de dados relacional...
- Gabarito Comentado (1)
- Aulas (3)
- Comentários (3)
- Estatísticas
- Cadernos
- Criar anotações
- Notificar Erro
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C
1. Tema central da questão
A questão aborda o conceito de triggers (ou gatilhos) em bancos de dados relacionais, especialmente situações de "cascading triggers" ou "trigger storms". O aluno precisa reconhecer cenários onde triggers disparam outros triggers, criando efeitos em cadeia que podem se tornar difíceis de controlar.
2. Resumo teórico
Triggers são rotinas automáticas que executam ações ao ocorrerem determinados eventos em tabelas (como INSERT, UPDATE ou DELETE). Quando triggers são definidos para modificar dados em outras tabelas (ou na mesma), eles podem disparar outros triggers, formando cadeias de execuções. Se não houver controle, podem ocorrer loops infinitos ou degradação de desempenho (storm), principalmente em SGBDs que não limitam a profundidade de triggers aninhados (MySQL Manual).
3. Justificativa da alternativa correta
C - Um trigger AFTER INSERT em uma tabela A que causa uma inserção em uma tabela B que, por sua vez, tem um trigger AFTER INSERT que atualiza a tabela A.
Nesse cenário, temos uma cadeia de disparos: a ação de inserir em A aciona um trigger que insere em B; o trigger em B, por sua vez, faz um UPDATE na tabela A. Isso pode repetir indefinidamente se não houver restrições, caracterizando um típico cascading trigger ou trigger storm. Este é exatamente o comportamento descrito no enunciado.
4. Análise das alternativas incorretas
A - Trigger BEFORE UPDATE que impede alteração de chave primária: apenas bloqueia a ação, não cria cadeia de triggers.
B - Trigger BEFORE INSERT que atualiza um campo na mesma tabela: em geral, atua apenas sobre o mesmo registro, não dispara outros triggers em cascata.
D - Trigger AFTER UPDATE que insere registro em tabela de auditoria: rotina comum e não gera disparos recursivos.
E - Trigger AFTER DELETE que atualiza estatística em outra tabela: também não aciona triggers em cascata.
5. Estratégia de interpretação
Ao ler a questão, busque palavras-chave como "disparar outro trigger", "atualiza tabela", "inserção em outra tabela". Cenários de ida e volta entre tabelas sinalizam riscos de cascading triggers. Fique atento a situações de dependência circular!
Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Loops infinitos, pensar na montanha russa e nos 360º
A alternativa correta é: C) Um trigger AFTER INSERT em uma tabela A que causa uma inserção em uma tabela B que, por sua vez, tem um trigger AFTER INSERT que atualiza a tabela A.
✅ Explicação detalhada:
Esse cenário descrito em C representa claramente um caso de "cascading triggers" ou até mesmo uma "trigger storm", que pode levar a:
Ciclos recursivos de execução entre triggers.
Degradação de desempenho, pois o SGBD continua executando ações indefinidamente (ou até atingir um limite interno).
Dificuldade de depuração, já que o fluxo de eventos se torna difícil de rastrear.
Cenário da alternativa C:
1. Uma inserção em A dispara um trigger AFTER INSERT...
2. Esse trigger insere em B...
3. A tabela B tem outro trigger AFTER INSERT que...
4. Atualiza a tabela A, o que pode disparar novamente o trigger original.
➡️ Resultado: um loop de execução de triggers potencialmente infinito ou muito profundo (trigger storm).
Tá certo isso? O trigger da tabela B não deveria fazer um INSERT ao invés de um UPDATE para causar o trigger storm?
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo