Tipos de simultaneidade

Para resolver o problema de simultaneidade reduzida em cursores, o ODBC expõe quatro tipos diferentes de simultaneidade de cursor:

  • Somente leitura O cursor pode ler dados, mas não pode atualizar ou excluir dados. Esse é o tipo de simultaneidade padrão. Embora o DBMS possa bloquear linhas para impor os níveis de isolamento Leitura Repetível e Serializável, ele pode usar bloqueios de leitura em vez de bloqueios de gravação. Isso resulta em maior simultaneidade porque outras transações podem pelo menos ler os dados.

  • Bloqueio O cursor usa o nível mais baixo de bloqueio necessário para garantir que possa atualizar ou excluir linhas no conjunto de resultados. Isso geralmente resulta em níveis de simultaneidade muito baixos, especialmente nos níveis de isolamento de transação Leitura Repetível e Serializável.

  • Simultaneidade otimista usando versões de linha e simultaneidade otimista usando valores O cursor usa simultaneidade otimista: ele atualiza ou exclui linhas somente se elas não tiverem sido alteradas desde a última leitura. Para detectar alterações, ele compara versões de linha ou valores. Não há garantia de que o cursor será capaz de atualizar ou excluir uma linha, mas a simultaneidade é muito maior do que quando o bloqueio é usado. Para obter mais informações, consulte a seguinte seção Simultaneidade otimista.

Um aplicativo especifica que tipo de simultaneidade ele deseja que o cursor use com o atributo de instrução SQL_ATTR_CONCURRENCY. Para determinar quais tipos são suportados, ele chama SQLGetInfo com a opção SQL_SCROLL_CONCURRENCY.