Transactions
Mise à jour : novembre 2007
Le concept de transaction a été développé pour traiter les cas dans lesquels l'état résultant de la base de données dépend du succès total d'une série d'opérations. Cette situation peut survenir car des opérations successives risquent de modifier les résultats des opérations précédentes. Ainsi, en cas d'échec d'une opération, l'état résultant pourrait être indéterminé.
Pour résoudre ce problème, les transactions regroupent une série d'opérations de façon à assurer l'intégrité du résultat final. Soit toutes les opérations réussissent puis sont validées (écrites dans la base de données), soit la transaction tout entière échoue. L'annulation de la transaction est appelée restauration. Le processus de restauration permet une récupération à partir des modifications, et rétablit l'état pré-transactionnel de la base de données.
Par exemple, lors d'une transaction bancaire automatisée, si une banque effectue le virement d'une somme du compte A au compte B, les opérations au débit sur A et au crédit sur B doivent toutes deux réussir pour que le traitement du virement soit correct. Dans le cas contraire, l'intégralité de la transaction se solde par un échec.
Une transaction doit avoir des propriétés ACID qui représentent les éléments suivants :
Atomicité Une transaction est une unité de travail atomique qui ne s'exécute qu'une seule fois ; le travail est traité en tout ou rien.
Cohérence Une transaction garantit la cohérence des données, en transformant un état cohérent des données en un autre état cohérent des données. Les données liées par une transaction doivent être préservées sur un plan sémantique.
Isolation Une transaction est une unité d'isolation et chacune se produit séparément et indépendamment des transactions simultanées. Une transaction ne doit jamais voir les phases intermédiaires d'une autre transaction.
Durabilité Une transaction est une unité de récupération. Si une transaction réussit, ses mises à jour persistent, même en cas de défaillance ou d'arrêt du système. En cas d'échec d'une transaction, le système reste dans l'état où il se trouvait avant la validation de la transaction.
Vous pouvez prendre en charge les transactions dans OLE DB (consultez Prise en charge des transactions dans OLE DB) ou ODBC (consultez Transaction (ODBC)).
Une transaction distribuée est une transaction qui met à jour les données distribuées, c'est-à-dire les données contenues sur plusieurs systèmes informatiques mis en réseau. Si vous souhaitez prendre en charge les transactions sur un système distribué, utilisez Microsoft .NET Framework à la place de la prise en charge des transactions OLE DB.
Pour plus d'informations sur les transactions dans Microsoft .NET Framework, consultez Traitement des transactions dans le Kit de développement logiciel (SDK) Windows.