Cursori scorrevoli e isolamento delle transazioni
Nella tabella seguente sono elencati i fattori che regolano la visibilità delle modifiche.
Modifiche apportate da: | La visibilità dipende da: |
---|---|
Cursore | Tipo di cursore, implementazione del cursore |
Altre istruzioni nella stessa transazione | Tipo di cursore |
Istruzioni in altre transazioni | Tipo di cursore, livello di isolamento della transazione |
Questi fattori sono mostrati nella figura seguente.
La tabella seguente riepiloga la capacità di ciascun tipo di cursore di rilevare le modifiche apportate dallo stesso, da altre operazioni nella propria transazione e da altre transazioni. La visibilità di queste ultime modifiche dipende dal tipo di cursore e dal livello di isolamento della transazione contenente il cursore.
Tipo di cursore\azione | Self | Pro Txn |
Othr Txn (RU[a]) |
Othr Txn (RC[a]) |
Othr Txn (RR[a]) |
Othr Txn (S[a]) |
---|---|---|---|---|---|---|
Statico | ||||||
Inserisci | Forse[b] | No | No | No | No | No |
Aggiornamento | Forse[b] | No | No | No | No | No |
Elimina | Forse[b] | No | No | No | No | No |
Gestito da keyset | ||||||
Inserisci | Forse[b] | No | No | No | No | No |
Aggiornamento | Sì | Sì | Sì | Sì | No | No |
Elimina | Forse[b] | Sì | Sì | Sì | No | No |
Dinamico | ||||||
Inserisci | Sì | Sì | Sì | Sì | Sì | No |
Aggiornamento | Sì | Sì | Sì | Sì | No | No |
Elimina | Sì | Sì | Sì | Sì | No | No |
[a] Le lettere tra parentesi indicano il livello di isolamento della transazione contenente il cursore; il livello di isolamento dell'altra transazione (in cui è stata apportata la modifica) è irrilevante.
RU: Lettura senza commit
RC: Lettura con commit
RR: Lettura ripetibile
S: Serializzabile
[b] Dipende dalla modalità di implementazione del cursore. Il fatto che il cursore possa rilevare o meno queste modifiche viene segnalato tramite l'opzione SQL_STATIC_SENSITIVITY in SQLGetInfo.