Considere o seguinte comando: SELECT * FROM Pessoa FOR UPDA...

Próximas questões
Com base no mesmo assunto
Q2172661 Banco de Dados
Considere o seguinte comando:
SELECT * FROM Pessoa FOR UPDATE;
Analise as assertivas abaixo e assinale a alternativa correta. I. Pode ser especificada na cláusula FOR UPDATE uma coluna, por exemplo: FOR UPDATE OF Nome. II. A cláusula FOR UPDATE irá fazer um LOCK de todas as tuplas selecionadas pelo SELECT e só as liberará quando a transação, que tem esse comando SELECT, for finalizada. III. A cláusula FOR UPDATE somente pode ser utilizada no SELECT externo de uma consulta, não pode ser utilizada em subconsultas ou SELECT aninhado.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: A - Todas estão corretas.

A questão aborda o tema de bloqueio (lock) de tuplas em operações de banco de dados, especificamente usando a cláusula FOR UPDATE em uma instrução SELECT. Este é um tópico importante no controle de concorrência dentro de sistemas de gerenciamento de banco de dados relacionais.

Vamos analisar as assertivas:

I. A cláusula FOR UPDATE pode, de fato, especificar uma coluna ou mais colunas sobre as quais o lock será aplicado, como no exemplo dado: FOR UPDATE OF Nome. Isso permite que o bloqueio seja mais granular e afete apenas as colunas que estão sendo potencialmente atualizadas.

II. Quando a cláusula FOR UPDATE é utilizada, ela aplica um bloqueio exclusivo (lock) às tuplas que são retornadas pelo SELECT, impedindo que outras transações modifiquem esses dados até que a transação atual seja concluída (ou seja, seja feito um COMMIT ou um ROLLBACK). Isso é fundamental para manter a integridade dos dados durante a transação.

III. A restrição ao uso da cláusula FOR UPDATE apenas em SELECT externo e não em subconsultas ou SELECTs aninhados é uma questão de escopo de transação. Isso porque a intenção do bloqueio é preparar as linhas para uma possível atualização subsequente dentro da mesma transação, o que pode não ser tão claro ou direto em subconsultas.

Portanto, todas as assertivas são verdadeiras, e a alternativa correta é a A, que indica que todas estão corretas. Entender como os bloqueios funcionam é essencial para gerenciar o acesso concorrente aos dados e garantir transações confiáveis e isoladas em bancos de dados relacionais.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

FOR UPDATE aplica um bloqueio exclusivo (lock) às tuplas retornadas pelo SELECT, impedindo que outras transações até COMMIT ou um ROLLBACK

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo