A respeito de transação de dados em SQL, julgue o próximo it...
Os níveis de consistência especificados pelo padrão SQL-92 incluem o read repetitivo, o read com efetivação e o read sem efetivação. No read repetitivo, é permitido que as transações leiam registros, mesmo sem sua efetivação.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: E (Errado)
Vamos entender por que a alternativa correta é "E - errado" e esclarecer os conceitos para que você possa dominar este conteúdo.
O tema tratado na questão são os níveis de isolamento de transações previstos pelo padrão SQL-92. Esses níveis de isolamento são fundamentais para garantir a consistência e a integridade dos dados em um sistema de banco de dados relacional.
Os principais níveis de isolamento definidos pelo padrão SQL-92 são:
- Read Uncommitted (Leitura Não Confirmada): Permite a leitura de dados que ainda não foram confirmados por outras transações. Esse nível tem o menor grau de isolamento e pode causar dirty reads (leituras sujas), onde uma transação pode ler dados que podem ser revertidos posteriormente.
- Read Committed (Leitura Confirmada): Permite a leitura de dados apenas após a confirmação (commit) de outras transações. Evita dirty reads, mas ainda pode permitir non-repeatable reads (leituras não repetíveis), onde os dados lidos por uma transação podem ser modificados por outras transações antes da confirmação.
- Repeatable Read (Leitura Repetível): Garante que, se uma transação ler um registro, qualquer leitura subsequente do mesmo registro retornará o mesmo valor, até que a transação seja concluída. Evita dirty reads e non-repeatable reads, mas ainda pode permitir phantom reads (leituras fantasmas), onde novas linhas podem ser adicionadas por outras transações.
- Serializable (Serializável): O nível mais alto de isolamento. Garante que as transações sejam completamente isoladas umas das outras, evitando dirty reads, non-repeatable reads e phantom reads. É como se as transações fossem executadas uma após a outra, de maneira sequencial.
Agora, vamos analisar a questão:
A alternativa menciona três níveis de consistência: "read repetitivo", "read com efetivação" e "read sem efetivação". Vamos esclarecer esses termos:
- Read Repetitivo: Este termo se refere ao nível de isolamento Repeatable Read, que garante que as leituras de dados sejam consistentes dentro da mesma transação.
- Read com Efetivação: Este termo se refere ao nível de isolamento Read Committed, onde só é possível ler dados que foram confirmados (committed).
- Read sem Efetivação: Este termo se refere ao nível de isolamento Read Uncommitted, onde é permitido ler dados não confirmados, podendo resultar em leituras sujas.
A questão afirma que no "read repetitivo" (Repeatable Read), é permitido que as transações leiam registros mesmo sem sua efetivação. Isso está errado. No nível Repeatable Read, uma transação só pode ler dados que já foram confirmados (committed), garantindo leituras consistentes.
Portanto, a afirmação da questão está incorreta, justificando a alternativa correta como "E - errado".
Espero que esta explicação tenha esclarecido a sua dúvida! Fique à vontade para perguntar se precisar de mais alguma coisa.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo