Cursori scorrevoli

Nelle applicazioni moderne basate sullo schermo, l'utente scorre indietro e avanti tra i dati. Per tali applicazioni, tornare a una riga recuperata in precedenza rappresenta un problema. Una possibilità è chiudere e riaprire il cursore e quindi recuperare le righe finché il cursore non raggiunge la riga richiesta. Un'altra possibilità consiste nel leggere il set di risultati, memorizzarlo nella cache in locale e implementare lo scorrimento nell'applicazione. Entrambe le possibilità funzionano bene solo con piccoli set di risultati e l’ultima è difficile da implementare. Una soluzione migliore consiste nell'usare un cursore scorrevole, che può spostarsi indietro e avanti nel set di risultati.

Un cursore scorrevole viene comunemente usato nelle applicazioni moderne basate sullo schermo in cui l'utente scorre avanti e indietro tra i dati. Tuttavia, le applicazioni devono usare cursori scorrevoli solo quando i cursori forward-only non eseguono il processo, poiché i cursori scorrevoli sono in genere più costosi rispetto ai cursori forward-only.

La possibilità di spostarsi all'indietro genera una domanda non applicabile ai cursori forward-only: è necessario che un cursore scorrevole rilevi le modifiche apportate alle righe recuperate in precedenza? Ovvero, è necessario rilevare righe aggiornate, eliminate e inserite di recente?

La domanda sorge perché la definizione di un set di risultati, ovvero il set delle righe che corrispondono a determinati criteri, non indica quando vengono controllate le righe per verificare se corrispondono a tale criterio, né indica se le righe devono contenere gli stessi dati ogni volta che vengono recuperate. L'omissione precedente consente ai cursori scorrevoli di rilevare se le righe sono state inserite o eliminate, mentre quest'ultima consente loro di rilevare i dati aggiornati.

La possibilità di rilevare le modifiche è a volte utile, altre no. Ad esempio, un'applicazione contabile necessita di un cursore che ignora tutte le modifiche; è impossibile far quadrare i libri se il cursore mostra le ultime modifiche. D'altra parte, un sistema di prenotazione aerea necessita di un cursore che mostra le modifiche più recenti ai dati; senza un cursore di questo tipo, sarebbe necessario rieseguire continuamente query sul database per visualizzare la disponibilità dei voli più aggiornata.

Per soddisfare le esigenze di applicazioni diverse, ODBC definisce quattro diversi tipi di cursori scorrevoli. Questi cursori variano sia in termini di costi che nella capacità di rilevare le modifiche apportate al set di risultati. Occorre considerare che, se un cursore scorrevole può rilevare le modifiche apportate alle righe, il rilevamento può avvenire solo quando esegue un secondo tentativo di recupero di tali righe. L'origine dei dati non è in grado di notificare al cursore le eventuali modifiche apportate alle righe in fase di recupero. Si noti anche che la visibilità delle modifiche è controllata anche dal livello di isolamento delle transazioni; per altre informazioni, vedere Isolamento delle transazioni.

Questa sezione descrive gli argomenti seguenti: