Fonctionnement des datasets en mode cachedUpdates avec
delphi2 + Oracle
Avec des datasets en mode cached updates, pour effectuer une sauvegarde des données
dans la base, on pourrait donner l’ordre suivant des opérations :
Try
Explication du fonctionnement ' constaté ' des datasets en mode cacheUpdates :
On pourrait modéliser une dataset a l’aide d’un tableau, ainsi a la suite d’un select sur une table
On pourrait se retrouver avec l’exemple suivant en mémoire :

Un post envoie les modifications (insertion, modification, suppression) du record courant dans le cache. La
dataset ne sachant référencer qu’un seul record a la fois, toutes les méthodes de déplacement (next, prior,
last..)lancent un post implicite. L’un des intérêts des caches est donc de faire plusieurs modifications en mémoire
sans les envoyer systématiquement à la base.
Si par exemple on modifie B en Bnew, on insere DA après D, on efface C et que l’on est en train d’insérer F (on
ne l’a pas encore posté), on se retrouve avec le schéma suivant :

Un cancel travail sur l’enregistrement courant et l’annule simplement :

Un applyUpdates envoie dans la base les modifications, mais garde la dataset intacte (toutefois, si le record
courant n’a pas été posté au moment du applyUpdates, il est posté par défaut) :

Un commit envoie les modifications ‘sur le disque’ tandis que le rollBack les annule, mais pour les caches en
mémoire, ces deux opérations n’ont aucune incidence, ce qui permet de récupérer les données lors d’une erreur
(par exemple un contrôle d’intégrité) :

C’est le commitUpdates qu’il faut appeler pour mettre a jour la dataSet en mémoire, si la transaction a bien
fonctionné :

Tandis que le cancelUpdates permet de retrouver l’état initiale (lors d’une erreur au commit par exemple) :

Quelques remarques :
