Considere o seguinte comando: SELECT * FROM Pessoa FOR UPDA...
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.
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