| dalla versione 6.6.2750 - modificato il 17/02/2009 - link - english
|
Scopo
Questa proprietà rappresenta il livello di isolamento delle operazioni eseguite sul database.
Per livello di isolamento di una transazione si intende il tipo di protezione che il database garantisce sulle operazioni eseguite in una transazione rispetto alle modifiche ai dati eseguite contemporaneamente da altri utenti.
Il livello di isolamento entra in gioco anche quando non c'è una esplicita transazione in corso, in questo caso sarà riferito alla singola istruzione SQL di interrogazione o modifica.
Database.IsolationLevel := livello
Quando letta
Ritorna il livello di isolamento attualmente impostato sul database.
Quando impostata
Modifica il livello di isolamento. Può essere impostata ad uno dei seguenti valori interi: 1, 2, 4, 8. Vedi le note sotto per maggiori informazioni.
Note
-
Il valore 1 equivale al livello Read Uncommitted (o Dirty Read). In questo caso è possibile leggere i dati modificati da altri utenti anche se le transazioni non sono ancora state confermate. E' quindi possibile leggere dati che saranno smentiti a breve, per questo non è consigliabile utilizzare questo livello di isolamento se non assolutamente necessario.
-
Il valore 2 equivale al livello Read Committed. In questo caso è possibile leggere i dati modificati da altri utenti solo se le transazioni sono state confermate. Questo è il livello di isolamento di default ed è quello consigliato per la normalità delle operazioni sul database perchè bilancia in modo equilibrato la concorrenza delle operazioni con la correttezza dei dati letti.
-
Il valore 4 equivale al livello Repeatable Read. In questo caso è possibile ripetere ogni istruzione di select effettuata dall'inizio della transazione ottenendo gli stessi dati sulle righe lette precedentemente, potrebbero tuttavia essere lette le nuove righe inserite nel frattempo da altri utenti. Per ottenere questo, il database server blocca ogni possibile scrittura sui dati letti fino alla fine della transazione, posponendo a tale momento il rilascio dei lock di lettura sui record. Questo livello normalmente diminuisce la possibilità di concorrenza delle operazioni sul database ed è quindi consigliato solo se necessario.
-
Il valore 8 equivale al livello Serializable. In questo caso è possibile ripetere ogni istruzione di select effettuata dall'inizio della transazione ottenendo gli stessi dati. Questo significa però che normalmente il database server blocca ogni possibile scrittura sull'intera tabella fino alla fine della transazione. Questo livello normalmente diminuisce notevolmente la possibilità di concorrenza delle operazioni sul database ed è quindi consigliato solo se assolutamente necessario.
-
Questa proprietà può essere modificata in qualunque momento, tuttavia essa viene comunicata al database al momento del primo utilizzo della connessione per effettuare query o aprire transazioni, nell'ambito della gestione della richiesta attuale del browser. Se allora si desidera modificare il livello di isolamento durante la gestione della richiesta è necessario effettuare una Close esplicita della connessione prima di modificare il livello di isolamento.
event NewForm.Categorie.BeforeCommit(
inout boolean Cancel
)
{
NwindDB.CloseConnection()
NwindDB.IsolationLevel := DUE
}
event NewForm.Categorie.AfterCommit(
int RowsUpdated
int RowsInErrors
)
{
NwindDB.CloseConnection()
NwindDB.IsolationLevel := ONE
}
Cosa ne pensi?
Ti sono rimaste delle domande su punti che questo articolo non ha trattato? Pensi che sia utile aggiungere una nota all'articolo? Aiutaci a migliorare la documentazione di Instant Developer scrivendo il tuo commento nei campi qui sotto.