2010-06-13 4 views

Répondre

0

Une transaction est utilisée pour garantir qu'un groupe d'actions (instructions sql) soit toutes effectuées (une validation) ou aucune (exécution).

Une utilisation typique est lorsque les mises à jour de deux tables ou plus doivent tous réussir (ou échouer toutes).

2

Une transaction garantit qu'un bloc de travail fonctionne de manière ACID - tout ou rien.

Le nom facultatif est utile pour les administrateurs de base de données lors du suivi de transactions à exécution longue. Dans TSQL directement les noms sont plus importants, pour les points de sauvegarde etc - mais dans le monde OO vous avez un objet pour cela.

Le isolation level détermine comment ACID il est. Sérialisable est le plus pur, mais a plus de frais généraux en termes de verrous supplémentaires (verrous de la gamme de clés, etc).

L'usage typique serait:

using (SqlTransaction tran = conn.BeginTransaction()) 
{ 
    try 
    { 
     /* work here, assigning "tran" onto 
     * any commands */ 
     tran.Commit(); 
    } 
    catch 
    { 
     tran.Rollback(); 
     throw; 
    } 
} 

À bien des égards, il est plus simple d'utiliser TransactionScope - cela crée une ambiante transaction, dans laquelle les commandes automatiquement enrôlent. Il peut également couvrir plusieurs dbs etc. avec la permission de DTC:

using(TransactionScope tran = new TransactionScope()) 
{ 
    /* work here; no need to assign tran to anything */ 
    tran.Complete(); 
} 
Questions connexes