Níveis de Isolamento no Padrão ANSI SQL
Gabarito: A (I, II e III). As três afirmações estão corretas de acordo com o padrão ANSI SQL: o nível Read Uncommitted permite todas as anomalias; o Repeatable Read previne leitura suja e não repetível, mas não previne fantasmas; e o Serializable previne todas as três anomalias.
A questão cobra o conhecimento dos níveis de isolamento definidos pelo padrão ANSI SQL e quais anomalias de concorrência cada um permite ou previne. Vamos analisar cada item:
Item I — ✅ Correto
O nível Read Uncommitted é o mais baixo. Ele não impõe qualquer restrição, permitindo leituras sujas (dirty reads), leituras não repetíveis (non-repeatable reads) e leituras fantasmas (phantom reads). Conforme a literatura de banco de dados, esse nível é caracterizado por não prevenir nenhuma das três anomalias.
Item II — ✅ Correto
O nível Repeatable Read garante que os dados lidos uma vez não serão alterados por outras transações (evita dirty reads e non-repeatable reads), mas não impede a inserção de novas linhas que satisfaçam a condição da consulta, ou seja, permite phantom reads. Essa é a definição padrão do ANSI SQL.
Item III — ✅ Correto
O nível Serializable é o mais alto e garante que a execução concorrente das transações produza o mesmo resultado que alguma execução serial. Portanto, impede todas as três anomalias: leitura suja, leitura não repetível e leitura fantasma. É o único nível que oferece isolamento completo.
Conclusão: todos os itens estão corretos, portanto a alternativa A é o gabarito.
Gabarito: A (I, II e III).