Partager via


Transaction : répercussions des transactions sur les mises à jour (ODBC)

Les mises à jour de 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, Editou 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, AddNewles Editopé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 les mises à jour

Le tableau suivant explique les effets des CommitTrans transactions.

Comment CommitTrans affecte les 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 alors 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 alors 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