Introduzione alle transazioni: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Creata pagina con "Una transazione è unità di lavoro, cioé una sequenza di operazioni, eseguite in modo '''atomico''' da un'applicazione su una w:base di dati. L'atomicità delle transazi..."
 
minor fixes, aggiunto esempio
Riga 1:
Una transazione è unità di lavoro, cioé una sequenza di operazioni, eseguite in modo '''atomico''' da un'applicazione su una [[w:base di dati|base di dati]]. L'atomicità delle transazioni implica che o vengono eseguite completamente o non vengono eseguite.
 
__TOC__
Riga 23:
Quando il DBMS raggiunge l'istruzione COMMIT WORK deve assicuare che l'effetto delle istruzioni della transazione rimanga permanentemente nella base di dati. Viceversa se l'istruzione fosse ROLLBACK WORK, il DBMS deve garantire che le istruzioni non abbiano alcun effetto sui dati.
 
Un altro esempio più elaborato che rappresenta un bonifico (classico caso di operazione che deve essere eseguita in modo assolutamente atomico):
<source lang="sql">
BEGIN TRANSACTION;
UPDATE contocorrente SET saldo=saldo+1000 WHERE idutente=3742;
UPDATE contocorrente SET saldo=saldo-1000 WHERE idutente=93811;
SELECT saldo INTO verifica WHERE idutente=3742;
IF verifica < 0 THEN
ROLLBACK WORK;
ELSE
COMMIT WORK;
END IF;
END TRANSACTION;
</source>
== Sistema transazionale ==
Un DBMS è detto '''transazionale''' se supporta l'esecuzione di transazioni in maniera concorrente e rispettando le [[proprietà ACID]]. Questi sistemi sono detti anche [[w:OLTP]] (Online Transaction Processing).
 
=== La necessitàdinecessità di sistemi transazionali ===
Le transazioni sono estremamente utili quando si vuole che un sistema possa reagire ad anomalie impreviste. Queste anomalie possono essere di tipo hardware (come ad esempio guasti) oppure di tipo software (errori durante l'esecuzione di una query, crash del sistema, ecc.). I sistemi transazionali garantiscono che la base di dati rimanga consistente.