Pular para o conteúdo principal

Questão de Banco de Dados — PostgreSQL — FCC 2020

Banco de DadosPostgreSQL
Código
fc058925
Banca
FCC
Órgão
AL-AP
Ano
2020
Cargo
Analista Legislativo - Desenvolvedor de Banco de Dados
O bloqueio em nível de linha ou registro, no PostgreSQL versão 11.x, é obtido automaticamente quando a linha é atualizada ou excluída. Os bloqueios em nível de linha não afetam a consulta aos dados, já que bloqueiam apenas gravações na mesma linha.Para ‘forçar’ um bloqueio de linha em um comando SELECT, deve-se usar:
  1. AWITH LOCK.
  2. BEXCLUSIVE.
  3. CFOR UPDATE.
  4. DNO UPDATE.
  5. ELINE LOCK.
Revelar gabarito e comentário

GabaritoC — FOR UPDATE.

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”.

PostgreSQL: Bloqueio de linhas em SELECT

Gabarito: letra C. No PostgreSQL, para forçar um bloqueio em nível de linha durante uma consulta SELECT, utiliza-se a cláusula FOR UPDATE. Essa cláusula adquire bloqueios exclusivos sobre as linhas retornadas, impedindo que outras transações as modifiquem até o fim da transação atual.

A questão trata especificamente do controle de concorrência no PostgreSQL. As demais alternativas não correspondem a comandos válidos para esse fim:

  • A) WITH LOCK: não é uma cláusula SQL válida no PostgreSQL (embora exista WITH para CTE, não seguido de LOCK).

  • B) EXCLUSIVE: é um modo de bloqueio de tabela, usado em LOCK TABLE, não aplicável diretamente a um SELECT.

  • D) NO UPDATE: não é uma cláusula reconhecida para bloqueio.

  • E) LINE LOCK: não faz parte da sintaxe do PostgreSQL.

PEGA ESSA DICA!

PostgreSQL oferece outras variações de bloqueio em SELECT, como FOR NO KEY UPDATE, FOR SHARE e FOR KEY SHARE, com diferentes níveis de exclusividade. A banca costuma cobrar o nome correto da cláusula — memorize FOR UPDATE.

Gabarito: letra C.

Link permanente: /questoes/fc058925