← Questões de Banco de Dados

Banco de Dados · CESPE/CEBRASPE · 2024

Questão comentada de Banco de Dados

Assinale a opção que indica o comando que só pode ser definido para executar em nível de instrução no banco de dados PostgreSQL.

Gabarito: B

No PostgreSQL, alguns eventos de trigger podem ser configurados para rodar por linha (row-level) ou por instrução (statement-level), mas nem todos se comportam igual. A palavra-chave TRUNCATE é especial: ela dispara trigger apenas em nível de instrução, porque o comando apaga o conteúdo da tabela de uma vez, sem percorrer linha por linha. Na prática, isso significa que você não cria trigger de TRUNCATE para cada registro individual, até porque não existe "linha afetada" como em UPDATE ou DELETE. O PostgreSQL trata TRUNCATE como operação global na tabela, então o gatilho, quando existir, é sempre FOR EACH STATEMENT. Já AFTER, BEFORE e UPDATE não são exclusivos de nível de instrução. BEFORE e AFTER são tempos de execução de trigger, e podem aparecer em contexto de linha ou de instrução, dependendo do evento e da definição. UPDATE, por sua vez, é apenas um evento de DML, não uma regra de nível por si só. Então o gabarito B está correto porque TRUNCATE é o comando que, no contexto de triggers no PostgreSQL, só pode ser definido para execução em nível de instrução. Essa é uma peculiaridade clássica cobrada em prova: TRUNCATE não tem versão por linha.

Continue treinando

Questões relacionadas