Auditor Fiscal de Tributos I - Tecnologia da Informação (TI)
Um Auditor digitou em um banco de dados Oracle, aberto e em condições ideais, a instrução PL/SQL:SELECT id, nome FROM cidadao WHERE id = '001' FOR UPDATE ORDER BY id;A cláusula FOR UPDATE
Aindica que todos os cidadãos que possuem o valor 001 no campo id poderão ter os dados modificados por qualquer usuário do banco de dados.
Baltera o valor do campo id do registro selecionado para 001, independentemente do valor existente nesse campo.
Cindica apenas que o Auditor está selecionando o cidadão que possui valor 001 no campo id para executar uma operação de alteração nos dados.
Dbloqueia as linhas na tabela cidadao onde o valor do campo id é 001 para que somente o Auditor possa alterar. O bloqueio será liberado apenas depois da emissão de uma instrução ROLLBACK ou COMMIT.
Eindica que os registros que possuem o valor 001 no campo id serão transferidos para a área de transferência do banco de dados onde poderão ser executadas operações de alteração de dados.
Revelar gabarito e comentário▾
GabaritoD — bloqueia as linhas na tabela cidadao onde o valor do campo id é 001 para que somente o Auditor possa alterar. O bloqueio será liberado apenas depois da emissão de uma instrução ROLLBACK ou COMMIT.
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”.
Oracle PL/SQL – Cláusula FOR UPDATE
Gabarito: letra D. A cláusula FOR UPDATE em uma instrução SELECT bloqueia as linhas retornadas para que somente a transação atual possa modificá-las, liberando o bloqueio apenas após um COMMIT ou ROLLBACK. É exatamente o que descreve a alternativa D.
A banca testa o conhecimento sobre o funcionamento do bloqueio pessimista no Oracle. O FOR UPDATE é usado para evitar que outras transações alterem os mesmos dados concorrentemente, garantindo a consistência.
Alternativa A — ❌ Incorreta
Afirma que "qualquer usuário" pode modificar os dados. Na verdade, o FOR UPDATEbloqueia as linhas para outros usuários: apenas a transação que emitiu o comando pode alterá-las até o fim da transação.
Alternativa B — ❌ Incorreta
O FOR UPDATE não altera valores; ele apenas bloqueia as linhas selecionadas. Alterar o valor do campo id para '001' seria feito com um UPDATE, não com o SELECT FOR UPDATE.
Alternativa C — ❌ Incorreta
Embora o FOR UPDATE seja usado quando se pretende alterar os dados, a alternativa afirma que ele "apenas indica" a intenção, o que é impreciso. A cláusula efetivamente bloqueia as linhas; não é mera indicação. A alternativa D captura corretamente o efeito concreto.
Alternativa D — ✅ Correta ⟵ GABARITO
Descreve com precisão o comportamento do FOR UPDATE: bloqueia as linhas onde id = '001' para que somente o Auditor (a transação atual) possa alterá-las, e o bloqueio persiste até que a transação seja encerrada com COMMIT ou ROLLBACK.
Alternativa E — ❌ Incorreta
Não existe "área de transferência" do banco de dados. O FOR UPDATE não transfere registros para lugar algum; apenas os bloqueia in loco.
PEGA ESSA DICA!
Lembre-se: FOR UPDATE é um bloqueio pessimisto. Ele trava as linhas no momento da leitura, impedindo que outras transações as modifiquem até o fim da transação. É comum em cenários de concorrência onde você lê e depois atualiza, querendo garantir que ninguém mais altere os dados entre a leitura e a escrita.