Questão de Banco de Dados — Gatilhos (Triggers) — FCC 2020
Banco de Dados›Gatilhos (Triggers)
Código
fc058935
Banca
FCC
Órgão
AL-AP
Ano
2020
Cargo
Analista Legislativo - Desenvolvedor de Banco de Dados
Considere uma tabela de produtos em estoque e outra de pedidos, em um banco de dados. Toda vez que um item for incluído na tabela de pedidos, a quantidade em estoque desse item, na tabela de produtos, deve ser diminuída de modo equivalente. Um Analista pode solucionar essa situação, e ainda ganhar em desempenho,
Ausando um trigger.
Bcriando uma view com dados de produtos e de pedidos.
Catribuindo o acesso a essas tabelas para apenas um usuário responsável.
Datribuindo privilégios à tabela de pedidos.
Eatribuindo privilégios à tabela de produtos.
Revelar gabarito e comentário▾
GabaritoA — usando um trigger.
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”.
Gatilhos (Triggers) em Banco de Dados
Gabarito: letra A. Um trigger (gatilho) é um procedimento armazenado que é executado automaticamente em resposta a eventos como INSERT, UPDATE ou DELETE em uma tabela. No cenário descrito, ao incluir um item na tabela de pedidos, um trigger pode ser disparado para decrementar automaticamente a quantidade em estoque na tabela de produtos, garantindo a consistência dos dados e melhorando o desempenho por eliminar a necessidade de programação manual da atualização.
A banca testa o conhecimento sobre a função dos triggers na automatização de regras de negócio que envolvem múltiplas tabelas. O contexto do material de apoio define claramente que triggers "são executados ou disparados automaticamente quando alguns eventos ocorrem" e que um exemplo típico é propagar alterações de uma tabela para outra, exatamente o caso da questão.
1INSERT na tabela Pedidos
2Trigger é disparado automaticamente
3UPDATE na tabela Produtos (decrementa estoque)
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
A alternativa está correta. Um trigger é o recurso ideal: ele é disparado automaticamente após a inserção de um pedido (evento INSERT) e executa a instrução SQL que diminui o estoque correspondente. Isso é feito de forma transparente para o usuário e sem necessidade de intervenção programática externa, o que também otimiza o desempenho ao evitar consultas ou transações adicionais no código da aplicação.
Alternativa B — ❌ Incorreta
Uma view (visão) é uma consulta virtual baseada em uma ou mais tabelas. Ela não executa ações — apenas apresenta dados. Não é possível, por meio de uma view, diminuir automaticamente o estoque quando um pedido é inserido; a view é apenas uma representação dos dados, não um mecanismo de execução de comandos DML.
Alternativa C — ❌ Incorreta
Atribuir o acesso a essas tabelas para apenas um usuário responsável não resolve o problema. O acesso controla quem pode ler ou modificar as tabelas, mas não automatiza a atualização do estoque. A ação de reduzir o estoque continuaria dependendo de uma intervenção manual ou de um código externo.
Alternativa D — ❌ Incorreta
Atribuir privilégios à tabela de pedidos apenas concede permissões (como INSERT, SELECT, UPDATE) aos usuários. Não há qualquer automatização embutida nos privilégios; eles apenas autorizam ou restringem operações, mas não executam comandos adicionais quando um pedido é inserido.
Alternativa E — ❌ Incorreta
Da mesma forma que a alternativa D, atribuir privilégios à tabela de produtos controla quem pode alterar o estoque, mas não realiza a diminuição automática. A lógica de negócio continuaria a ser de responsabilidade da aplicação, sem ganho de desempenho.
PEGA ESSA DICA!
Sempre que um enunciado falar em "toda vez que ocorrer X, deve ocorrer Y automaticamente" — pense em trigger. É o recurso padrão em bancos de dados para reagir a eventos DML (INSERT, UPDATE, DELETE) e manter a consistência entre tabelas relacionadas.