Transaction : répercussions des transactions sur les mises à jour (ODBC)
Mises à jour à la source de données sont gérées pendant les transactions via l’utilisation d’une mémoire tampon d’édition (la même méthode utilisée en dehors des transactions). Les membres de données de champ d’un jeu d’enregistrements servent collectivement de mémoire tampon d’édition qui contient l’enregistrement actif, que le jeu d’enregistrements sauvegarde temporairement pendant un AddNew
ou Edit
. Pendant une Delete
opération, l’enregistrement actif n’est pas sauvegardé dans une transaction. Pour plus d’informations sur la mémoire tampon de modification et sur la façon dont les mises à jour stockent l’enregistrement actif, consultez Recordset : How Recordsets Update Records (ODBC).
Remarque
Si vous avez implémenté la récupération de lignes en bloc, vous ne pouvez pas appeler AddNew
, Edit
ou Delete
. Vous devez à la place écrire vos propres fonctions pour effectuer des mises à jour de la source de données. Pour plus d’informations sur l’extraction de lignes en bloc, consultez Recordset : Extraction d’enregistrements en bloc (ODBC).
Pendant les transactions, AddNew
les Edit
opérations et Delete
les opérations peuvent être validées ou restaurées. Les effets de l’enregistrement CommitTrans
Rollback
actuel peuvent ne pas être restaurés dans la mémoire tampon d’édition. Pour vous assurer que l’enregistrement actif est correctement restauré, il est important de comprendre comment fonctionnent les fonctions membres et Rollback
les CommitTrans
fonctions CDatabase
de mise à jour de CRecordset
.
Comment CommitTrans affecte Mises à jour
Le tableau suivant explique les effets des CommitTrans
transactions.
Comment CommitTrans affecte Mises à jour
Opération | État de la source de données |
---|---|
AddNew et Update , puis CommitTrans |
Un nouvel enregistrement est ajouté à la source de données. |
AddNew (sans Update ), puis CommitTrans |
Un nouveau record est perdu. Enregistrement non ajouté à la source de données. |
Edit et Update , puis CommitTrans |
Modifie la source de données validée. |
Edit (sans Update ), puis CommitTrans |
Les modifications de l’enregistrement sont perdues. L’enregistrement reste inchangé sur la source de données. |
Delete Puis CommitTrans |
Enregistrements supprimés de la source de données. |
Comment la restauration affecte les transactions
Le tableau suivant explique les effets des Rollback
transactions.
Comment la restauration affecte les transactions
Opération | État de l’enregistrement actif | Vous devez également | État de la source de données |
---|---|---|---|
AddNew et Update , puis Rollback |
Le contenu de l’enregistrement actif est stocké temporairement pour créer de la place pour un nouvel enregistrement. Un nouvel enregistrement est entré dans la mémoire tampon d’édition. Une fois Update appelé, l’enregistrement actif est restauré dans la mémoire tampon d’édition. |
L’ajout à la source de données effectuée par Update est inversé. |
|
AddNew (sans Update ), puis Rollback |
Le contenu de l’enregistrement actif est stocké temporairement pour créer de la place pour un nouvel enregistrement. Modifier la mémoire tampon contient un nouvel enregistrement. | Appelez AddNew à nouveau pour restaurer la mémoire tampon de modification dans un nouvel enregistrement vide. Ou appelez Move (0) pour restaurer les anciennes valeurs dans la mémoire tampon de modification. |
Comme Update on n’a pas appelé, aucune modification n’a été apportée à la source de données. |
Edit et Update , puis Rollback |
Une version non modifiée de l’enregistrement actif est stockée temporairement. Les modifications sont apportées au contenu de la mémoire tampon d’édition. Une fois Update appelée, la version non modifiée de l’enregistrement est toujours stockée temporairement. |
Dynaset : Faites défiler l’enregistrement actif puis revenez pour restaurer la version non modifiée de l’enregistrement dans la mémoire tampon de modification. Instantané : appelez Requery pour actualiser le jeu d’enregistrements à partir de la source de données. |
Les modifications apportées à la source de données sont Update inversées. |
Edit (sans Update ), puis Rollback |
Une version non modifiée de l’enregistrement actif est stockée temporairement. Les modifications sont apportées au contenu de la mémoire tampon d’édition. | Appelez Edit à nouveau pour restaurer la version non modifiée de l’enregistrement dans la mémoire tampon de modification. |
Comme Update on n’a pas appelé, aucune modification n’a été apportée à la source de données. |
Delete Puis Rollback |
Le contenu de l’enregistrement actif est supprimé. | Appelez Requery pour restaurer le contenu de l’enregistrement actif à partir de la source de données. |
La suppression des données de la source de données est inversée. |
Voir aussi
Transaction (ODBC)
Transaction : exécution d’une transaction dans un recordset (ODBC)
CDatabase, classe
CRecordset, classe