Em SGBDs relacionais como SQL Server e PostgreSQL, analise o trecho abaixo:
CREATE OR REPLACE _ _ _ _ _ _? AFTER INSERT ON PEDIDO FOR EACH ROW BEGIN IF NEW.valor < 0 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Valor inválido'; END IF; INSERT INTO LOG_PEDIDOS(id_pedido, data_registro, operacao) VALUES (NEW.id_pedido, NOW(), 'INSERT'); END;
Esse bloco é executado automaticamente pelo SGBD após uma inserção na tabela PEDIDO, sem chamada explícita da aplicação. Assinale a alternativa que indica corretamente o recurso que preenche a lacuna.
ATrigger, pois é um bloco vinculado a um evento sobre uma tabela, disparado automaticamente pelo SGBD para executar validações e rotinas de auditoria.
BCheckpoint, pois sincroniza periodicamente o buffer de memória com o disco após operações de escrita em tabelas críticas.
CStored Procedure, pois é um bloco armazenado no banco executado automaticamente após eventos de manipulação de dados.
DCommit, pois confirma definitivamente as operações da transação, garantindo que validações e registros de auditoria sejam persistidos.
ESwapping, pois gerencia a alternância entre blocos de comandos ativos na memória priorizando rotinas críticas de validação.
Revelar gabarito e comentário▾
GabaritoA — Trigger, pois é um bloco vinculado a um evento sobre uma tabela, disparado automaticamente pelo SGBD para executar validações e rotinas de auditoria.
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 (Gatilhos) em SGBDs Relacionais
Gabarito: letra A. O trecho apresentado descreve um Trigger (gatilho), pois é um bloco de código vinculado a um evento (AFTER INSERT) sobre uma tabela (PEDIDO), que o SGBD executa automaticamente, sem chamada explícita da aplicação, para realizar validações e rotinas de auditoria. As demais alternativas (Checkpoint, Stored Procedure, Commit e Swapping) não correspondem ao recurso descrito.
Um Trigger é um objeto de banco de dados que associa um bloco de código a um evento específico (INSERT, UPDATE ou DELETE) sobre uma tabela ou visão. Quando o evento ocorre, o SGBD dispara o gatilho automaticamente, executando o código definido. Esse mecanismo é amplamente utilizado para garantir a integridade dos dados, implementar regras de negócio complexas, manter auditoria (logs) e realizar validações que não podem ser expressas apenas com restrições de integridade tradicionais (como CHECK ou FOREIGN KEY).
A sintaxe do trecho confirma a natureza do recurso: CREATE OR REPLACE TRIGGER é o comando padrão para criar ou substituir um gatilho. A cláusula AFTER INSERT ON PEDIDO define o momento do disparo (após a inserção) e a tabela-alvo. O FOR EACH ROW indica que o gatilho é do tipo row-level, ou seja, executa uma vez para cada linha afetada pela operação. Dentro do bloco, o código verifica se o valor inserido é negativo (IF NEW.valor < 0) e, se for, gera um erro (SIGNAL SQLSTATE '45000'), abortando a operação. Caso contrário, insere um registro na tabela de log (LOG_PEDIDOS), registrando a operação de auditoria.
É importante distinguir o Trigger de outros conceitos de banco de dados:
Stored Procedure (Procedimento Armazenado): é um bloco de código SQL armazenado no banco, mas que não é executado automaticamente por eventos. Ele precisa ser invocado explicitamente pela aplicação ou por outro código, usando o comando CALL ou EXECUTE. O Trigger, por outro lado, é disparado pelo próprio SGBD quando o evento associado ocorre.
Checkpoint: é um mecanismo interno do SGBD que sincroniza o buffer de memória com o disco, garantindo a durabilidade das transações. Não tem relação com eventos de manipulação de dados nem com validações de negócio.
Commit: é o comando que confirma uma transação, tornando permanentes as alterações realizadas. Não é um bloco de código executado automaticamente, mas sim uma instrução explícita.
Swapping: é um conceito de gerenciamento de memória do sistema operacional, que move páginas de memória entre a RAM e o disco. Não tem relação com banco de dados.
A pegadinha da questão está em confundir Trigger com Stored Procedure. Ambos são blocos de código armazenados no banco, mas a diferença crucial é o disparo automático: o Trigger é acionado por eventos, enquanto a Stored Procedure exige chamada explícita. A alternativa C tenta explorar exatamente essa confusão, mas erra ao afirmar que a Stored Procedure é executada automaticamente após eventos de manipulação de dados.
Guarde a distinção central: Trigger = disparo automático por evento; Stored Procedure = execução explícita. É esse critério que separa a alternativa correta das demais.
Trigger (gatilho): Disparo automático (Vinculado a evento (INSERT/UPDATE/DELETE), SGBD executa sem chamada explícita); Cláusulas típicas (AFTER / BEFORE, FOR EACH ROW (row-level)); Usos (Validações, Auditoria (logs), Regras de negócio); Diferença de Stored Procedure (Trigger: disparo por evento, Stored Procedure: execução explícita (CALL/EXECUTE))
Alternativa A — ✅ Correta ⟵ GABARITO
A alternativa descreve com precisão o conceito de Trigger: um bloco vinculado a um evento sobre uma tabela, disparado automaticamente pelo SGBD para executar validações e rotinas de auditoria. O trecho do enunciado exemplifica exatamente isso: o gatilho é criado com CREATE OR REPLACE TRIGGER, associado ao evento AFTER INSERT ON PEDIDO, e contém uma validação (verificar se o valor é negativo) e uma rotina de auditoria (inserir registro na tabela de log). O disparo automático é a característica fundamental que define o Trigger.
Alternativa B — ❌ Incorreta
Checkpoint é um mecanismo interno do SGBD que sincroniza o buffer de memória com o disco, garantindo que as alterações confirmadas sejam persistidas. Ele não é um bloco de código vinculado a eventos de manipulação de dados, nem executa validações ou rotinas de auditoria. A descrição da alternativa não corresponde ao recurso apresentado no enunciado.
Alternativa C — ❌ Incorreta
Stored Procedure é um bloco de código SQL armazenado no banco, mas que não é executado automaticamente por eventos. Ele precisa ser invocado explicitamente pela aplicação, usando CALL ou EXECUTE. A alternativa erra ao afirmar que a Stored Procedure é executada automaticamente após eventos de manipulação de dados — essa é a característica do Trigger, não da Stored Procedure. A pegadinha está em confundir os dois conceitos, que são semelhantes por serem blocos de código armazenados, mas diferem no disparo.
Alternativa D — ❌ Incorreta
Commit é o comando que confirma uma transação, tornando permanentes as alterações realizadas. Ele não é um bloco de código executado automaticamente, mas sim uma instrução explícita que a aplicação emite para finalizar uma transação. A alternativa não descreve o recurso do enunciado, que é um bloco de código disparado por evento.
Alternativa E — ❌ Incorreta
Swapping é um conceito de gerenciamento de memória do sistema operacional, que move páginas de memória entre a RAM e o disco. Não tem relação com banco de dados, nem com eventos de manipulação de dados, validações ou auditoria. A alternativa é completamente alheia ao contexto da questão.
NÃO CAIA NESSA!
A banca tenta confundir Trigger com Stored Procedure (alternativa C). Ambos são blocos de código armazenados no banco, mas a diferença crucial é o disparo automático: o Trigger é acionado por eventos, enquanto a Stored Procedure exige chamada explícita. Ao ver um bloco de código com CREATE OR REPLACE e cláusulas como AFTER INSERT ou BEFORE UPDATE, lembre-se: isso é Trigger. Stored Procedure não tem essas cláusulas de evento.
PEGA ESSA DICA!
Para diferenciar Trigger de Stored Procedure na prova, procure por palavras-chave como AFTER, BEFORE, INSTEAD OF, FOR EACH ROW — elas indicam que o bloco é um Trigger. Stored Procedures são invocadas com CALL ou EXECUTE e não possuem essas cláusulas de evento.