Questão de Banco de Dados — Gerência de Transações — FGV 2026
Banco de Dados›Gerência de Transações
Código
fg127348
Banca
FGV
Órgão
AL-RO
Ano
2026
Nível
Superior
Cargo
Analista Legislativo (Tecnologia da Informação - Banco de Dados)
Um desenvolvedor precisa criar uma rotina para calcular o imposto de uma transação e outra rotina para registrar o fechamento do caixa diário, que deve inserir dados em uma tabela e, se necessário, realizar um COMMIT ou ROLLBACK.Assinale a opção que apresenta o recurso programático mais apropriado para a rotina de fechamento de caixa diário e sua característica fundamental.
AUma Função, pois ela pode conter lógica de DML e DDL com controle transacional.
BUma View, pois ela é ideal para encapsular lógica de negócios complexa.
CUm Trigger, pois é ativado por comandos DML em uma tabela e não pode ser chamado diretamente.
DUma Stored Procedure, pois ela pode executar comandos DML, DDL e lógica transacional completa, sendo chamada explicitamente.
EUma Cláusula HAVING, pois é usada para encapsular regras de agregação de dados.
Revelar gabarito e comentário▾
GabaritoD — Uma Stored Procedure, pois ela pode executar comandos DML, DDL e lógica transacional completa, sendo chamada explicitamente.
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”.
Stored Procedures e Controle Transacional em SQL
Gabarito: letra D. Uma Stored Procedure (procedimento armazenado) é o recurso mais adequado para a rotina de fechamento de caixa diário, pois permite executar comandos DML (INSERT/UPDATE/DELETE), DDL (CREATE/ALTER) e, principalmente, realizar controle transacional completo (COMMIT e ROLLBACK), sendo chamada explicitamente pelo desenvolvedor. As demais opções ou não suportam transações (Funções, Views, HAVING) ou não são chamadas diretamente (Triggers).
A questão testa o conhecimento sobre os tipos de objetos programáveis em SQL e suas características. Uma rotina que precisa inserir dados e tomar decisão entre COMMIT e ROLLBACK exige encapsulamento de lógica transacional, o que é justamente o papel de uma Stored Procedure.
Recurso Programático
Característica Fundamental
Adequado para Rotina de Fechamento de Caixa?
Stored Procedure
Executa comandos DML, DDL e lógica transacional completa (COMMIT/ROLLBACK), sendo chamada explicitamente.
✅ Sim
Function
Pode conter lógica DML e DDL, mas não é projetada para controle transacional (efeitos colaterais).
❌ Não
View
Consulta armazenada; não encapsula lógica de negócios complexa nem suporta DML/transações.
❌ Não
Trigger
Ativado automaticamente por DML em uma tabela; não pode ser chamado diretamente.
❌ Não
Cláusula HAVING
Usada para filtrar grupos em agregações; não encapsula lógica transacional.
❌ Não
Alternativa A — ❌ Incorreta
Uma Function (função) pode conter lógica DML e DDL em alguns SGBDs, mas não é projetada para controle transacional. Funções são usadas para computar valores e devem ser livres de efeitos colaterais (como COMMIT/ROLLBACK). Embora algumas implementações permitam, não é a prática padrão nem o recurso mais apropriado.
Alternativa B — ❌ Incorreta
Uma View (visão) é uma consulta armazenada, que não encapsula lógica de negócios complexa nem suporta comandos DML ou transacionais. Ela apenas representa dados de uma ou mais tabelas, sem executar ações.
Alternativa C — ❌ Incorreta
Um Trigger (gatilho) é ativado automaticamente por comandos DML em uma tabela e executa no contexto da transação que o disparou. No entanto, não pode ser chamado diretamente e não é o recurso adequado para uma rotina explícita de fechamento de caixa, que deve ser invocada sob demanda.
Alternativa D — ✅ Correta ⟵ GABARITO
Uma Stored Procedure é um bloco de código nomeado que pode receber parâmetros, executar comandos DML e DDL, e gerenciar transações com COMMIT e ROLLBACK. Ela é chamada explicitamente (por exemplo, EXEC ou CALL), o que a torna ideal para rotinas como o fechamento de caixa diário, onde se decide entre confirmar ou reverter as operações.
PEGA ESSA DICA!
Lembre-se: procedimentos armazenados são o local correto para colocar lógica transacional. Funções e triggers têm limitações de uso de COMMIT/ROLLBACK. View é apenas consulta; HAVING é cláusula de filtro de grupos, não recurso programático.
Alternativa E — ❌ Incorreta
A cláusula HAVING é usada para filtrar grupos em consultas com GROUP BY. Ela não encapsula lógica, não executa comandos DML/DDL e não tem qualquer relação com controle transacional.