Cursori scorrevoli

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

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

La possibilità di spostarsi indietro genera una domanda non applicabile ai cursori forward-only: un cursore scorrevole deve rilevare le modifiche apportate alle righe recuperate in precedenza? In altre informazioni, deve rilevare le righe aggiornate, eliminate e appena inserite?

Questa domanda si verifica perché la definizione di un set di risultati, il set di righe che corrisponde a determinati criteri, non indica quando vengono controllate le righe per verificare se corrispondono a tali criteri, né indica se le righe devono contenere gli stessi dati ogni volta che vengono recuperate. La prima omissione consente ai cursori scorrevoli di rilevare se le righe sono state inserite o eliminate, mentre la seconda consente di rilevare i dati aggiornati.

La possibilità di rilevare le modifiche è talvolta utile, a volte no. Ad esempio, per un'applicazione di contabilità è necessario un cursore che ignori tutte le modifiche. Non è possibile bilanciare i libri se il cursore mostra le modifiche più recenti. D'altra parte, un sistema di prenotazioni di compagnie aeree richiede un cursore che mostra le modifiche più recenti ai dati. senza tale cursore, deve eseguire continuamente una nuova query sul database per visualizzare la disponibilità dei voli più aggiornata.

Per soddisfare le esigenze di applicazioni diverse, ODBC definisce quattro tipi diversi di cursori scorrevoli. Questi cursori variano sia a livello di spesa che di capacità di rilevare le modifiche al set di risultati. Si noti che se un cursore scorrevole è in grado di rilevare modifiche alle righe, può rilevarle solo quando tenta di eseguire il refetch di tali righe. Non è possibile per l'origine dati notificare al cursore le modifiche apportate alle righe attualmente recuperate. Si noti anche che la visibilità delle modifiche è controllata anche dal livello di isolamento della transazione. Per altre informazioni, vedere Isolamento delle transazioni.

In questa sezione vengono trattati gli argomenti seguenti.