TSDBQuery.SavePoint

TSDBQuery = class (TObject)Interface de TSDBQueryExemples de TSDBQuery

Pose un SAVEPOINT dans une transaction

Syntaxe

function SavePoint(): String

Remarques

La fonction permet de poser un SAVEPOINT dans le cadre d'une transaction de TSDBQuery.

La fonction génère automatiquement un nom pour le savepoint et le renvoie.

On peut voir un SavePoint comme un Commit partiel, ce qui permet de faire des mécanismes avancés de gestion d'erreur :

  • quand on doit à la fois faire des écritures dans 2 bases de données, on fait un SavePoint dans chacune des 2 bases pour s'assurer que le Commit sera possible, puis on fait le Commit dans les 2 bases (sinon, on fait un RollBack dans les 2 bases).
  • quand on doit faire une écriture dans une base et écrire un fichier, on fait un SavePoint dans la base. S'il échoue, on ne crée pas le fichier. S'il passe, on crée le fichier. Si l'écriture du fichier échoue alors, on RollBack sinon on Commit.

NB : La fonction provoque un Runtime error si elle est appelée en dehors d'une transaction.

Exemples

uses SDB;

var db:=TSDBQuery.CreateFromDataSource('MaBDD');
db.StartTransaction;
try
   // ...
   // ... Actions
   // ...
   db.SavePoint;

   // Si on est arrivé jusqu'ici, on crée le fichier
   SaveStringToTextFile('C:\Temp\MonFichier.txt', 'Données du fichier');
   db.Commit;
except
   // En cas de problème, avant ou après le SavePoint,
   // on arrive ici et on annule les écritures de la transaction
   db.RollBack;
   raise;
end;

Classification

SDB TSDBQuery