Pular para o conteúdo principal

Questão de Banco de Dados — Oracle — FCC 2018

Banco de DadosOracle
Código
fc047339
Banca
FCC
Órgão
Prefeitura de São Luís - MA
Ano
2018
Cargo
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
  1. 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.
  2. Baltera o valor do campo id do registro selecionado para 001, independentemente do valor existente nesse campo.
  3. 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.
  4. 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.
  5. 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 UPDATE bloqueia 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.

Gabarito: letra D.

Link permanente: /questoes/fc047339