Tipi di concorrenza

Per risolvere il problema di concorrenza ridotta nei cursori, ODBC espone quattro diversi tipi di concorrenza dei cursori:

  • Di sola lettura Il cursore può leggere i dati, ma non può aggiornarli o eliminarli. Si tratta del tipo di concorrenza predefinito. Anche se potrebbe bloccare le righe per applicare i livelli di isolamento Lettura ripetibile e Serializzabile, il DBMS può usare blocchi di lettura anziché blocchi di scrittura. Ciò comporta una concorrenza più elevata perché altre transazioni possono almeno leggere i dati.

  • Blocco Il cursore usa il livello più basso di blocco necessario per assicurarsi di poter aggiornare o eliminare righe nel set di risultati. Questo in genere comporta livelli di concorrenza molto bassi, soprattutto ai livelli di isolamento delle transazioni Lettura ripetibile e Serializzabile.

  • Concorrenza ottimistica usando le versioni di riga e concorrenza ottimistica usando i valori Il cursore usa la concorrenza ottimistica: aggiorna o elimina righe solo se non sono state modificate dopo l'ultima lettura. Per rilevare le modifiche, confronta le versioni delle righe o i valori. Non c'è garanzia che il cursore sia in grado di aggiornare o eliminare una riga, ma la concorrenza è molto superiore rispetto a quando viene usato il blocco. Per altre informazioni, vedere la sezione seguente, Concorrenza ottimistica.

Un'applicazione specifica il tipo di concorrenza che vuole usi il cursore con l'attributo dell'istruzione SQL_ATTR_CONCURRENCY. Per determinare quali tipi sono supportati, chiama SQLGetInfo con l'opzione SQL_SCROLL_CONCURRENCY.