Condividi tramite


Transazioni ODBC

Una transazione è un'unità di lavoro eseguita come singola operazione atomica; ovvero l'operazione ha esito positivo o negativo nel suo complesso. Si consideri ad esempio il trasferimento di denaro da un conto bancario a un altro. Ciò comporta due passaggi: prelievo del denaro dal primo conto e deposito nel secondo. È importante che entrambi i passaggi abbiano esito positivo; non è accettabile che un passaggio abbia esito positivo e l'altro non riesca. Un database che supporta le transazioni è in grado di garantire questa operazione.

Le transazioni possono essere completate eseguendo il commit o il rollback. Quando viene eseguito il commit di una transazione, le modifiche apportate in tale transazione vengono rese permanenti. Quando viene eseguito il rollback di una transazione, le righe interessate vengono restituite allo stato in cui si trovavano prima dell'avvio della transazione. Per estendere l'esempio di trasferimento dell'account, un'applicazione esegue un'istruzione SQL per addebitare il primo conto e un'istruzione SQL diversa per accreditare il secondo conto. Se entrambe le istruzioni hanno esito positivo, l'applicazione conferma la transazione. Tuttavia, se una delle istruzioni ha esito negativo per qualsiasi motivo, l'applicazione esegue il rollback della transazione. In entrambi i casi, l'applicazione garantisce uno stato coerente alla fine della transazione.

Una singola transazione può includere più operazioni di database che si verificano in momenti diversi. Se altre transazioni avevano accesso completo ai risultati intermedi, le transazioni potrebbero interferire tra loro. Si supponga, ad esempio, che una transazione inserisca una riga, una seconda transazione legga tale riga e che venga eseguito il rollback della prima transazione. La seconda transazione include ora dati per una riga che non esiste.

Per risolvere questo problema, esistono vari schemi per isolare le transazioni l'una dall'altra. L'isolamento delle transazioni viene in genere implementato bloccando le righe, che impediscono a più transazioni di usare contemporaneamente la stessa riga. In alcuni database, il blocco di una riga può anche bloccare altre righe.

Con un maggiore isolamento delle transazioni si riduce la concorrenza o la capacità di due transazioni di usare contemporaneamente gli stessi dati. Per altre informazioni, vedere Impostazione del livello di isolamento delle transazioni.

Questa sezione contiene i seguenti argomenti: