Partager via


Transactions dans ODBC

Une transaction est une unité de travail effectuée sous la forme d’une seule opération atomique ; autrement dit, l’opération réussit ou échoue dans son ensemble. Par exemple, envisagez de transférer de l’argent d’un compte bancaire vers un autre. Cela implique deux étapes : retirer l’argent du premier compte et le déposer dans la seconde. Il est important que les deux étapes réussissent ; il n’est pas acceptable qu’une étape réussisse et que l’autre échoue. Une base de données qui prend en charge les transactions est en mesure de garantir cela.

Les transactions peuvent être terminées en étant validées ou restaurées. Lorsqu’une transaction est validée, les modifications apportées à cette transaction sont définitives. Lorsqu’une transaction est restaurée, les lignes affectées sont retournées à l’état dans lequel elles se trouvaient avant le démarrage de la transaction. Pour étendre l’exemple de transfert de compte, une application exécute une instruction SQL pour débiter le premier compte et un autre relevé SQL pour créditer le deuxième compte. Si les deux instructions réussissent, l’application valide ensuite la transaction. Toutefois, si l’une ou l’autre instruction échoue pour une raison quelconque, l’application restaure la transaction. Dans les deux cas, l’application garantit un état cohérent à la fin de la transaction.

Une transaction unique peut englober plusieurs opérations de base de données qui se produisent à différents moments. Si d’autres transactions avaient un accès complet aux résultats intermédiaires, les transactions peuvent interférer entre elles. Par exemple, supposons qu’une transaction insère une ligne, une deuxième transaction lit cette ligne et que la première transaction est restaurée. La deuxième transaction contient désormais des données pour une ligne qui n’existe pas.

Pour résoudre ce problème, il existe différents schémas pour isoler les transactions les unes des autres. L’isolation des transactions est généralement implémentée en verrouillant les lignes, ce qui empêche plusieurs transactions d’utiliser la même ligne en même temps. Dans certaines bases de données, le verrouillage d’une ligne peut également verrouiller d’autres lignes.

Avec l’isolation accrue des transactions, la concurrence est réduite ou la capacité de deux transactions à utiliser les mêmes données en même temps. Pour plus d’informations, consultez Définition du niveau d’isolation des transactions.

Cette section contient les rubriques suivantes :