Em um sistema de gerenciamento de banco de dados relacional...

Próximas questões
Com base no mesmo assunto
Q3508330 Banco de Dados
Em um sistema de gerenciamento de banco de dados relacional (SGBD), triggers são mecanismos que executam ações automáticas em resposta a eventos como inserções, atualizações ou exclusões em tabelas. Quando triggers são mal projetados, especialmente em cenários que envolvem múltiplas tabelas, eles podem resultar em "cascading triggers" ou "trigger storms", um comportamento em que um trigger dispara outro que, por sua vez, dispara mais triggers, potencialmente levando a loops infinitos, desempenho degradado ou dificuldades de depuração. Considere um SGBD que permite triggers aninhados sem limite estrito de profundidade. Avalie as seguintes afirmações sobre cenários de definição de triggers em um banco de dados relacional e assinale aquela que descreve um cenário de cascading triggers ou trigger storms:
Alternativas

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