« AllocTranContext (CM) » : différence entre les versions

De Wiki1000
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 20 : Ligne 20 :
begin
begin
   new := ClassManager.AllocTranContext;
   new := ClassManager.AllocTranContext;
   old := ClassManager.ActivateTranContext(new);
   old := ClassManager.ActivateContext(new);
   try
   try
   ClassManager.BeginTran;
   ClassManager.BeginTran;
Ligne 40 : Ligne 40 :
var old:Integer;
var old:Integer;
begin
begin
   old := ClassManager.ActivateTranContext(ClassManager.AllocTranContext);
   old := ClassManager.ActivateContext(ClassManager.AllocTranContext);
   try
   try
   ClassManager.BeginTran;
   ClassManager.BeginTran;

Version du 4 janvier 2017 à 08:14

function AllocTranContext:Integer;

Cette fonction alloue un contexte de transaction.

Note : Cette fonction ne change pas le contexte en cours.
Result Un entier représentant un nouveau contexte de transaction

Cette fonction et ses compagnions permettent d'exécuter une transaction dans un contexte séparé du contexte courant. Elles permettent, par exemple, de s'assurer d'une mise d'un objet même si une transaction est en cours et peut éventuellement échouer.

Exemple

Exécution d'une transaction séparée.

var new,old:Integer;
begin
  new := ClassManager.AllocTranContext;
  old := ClassManager.ActivateContext(new);
  try
   ClassManager.BeginTran;
   try
     ...
     ClassManager.Commit;
   except
   ClassManager.RollBack;
   end;
  finally
  ClassManager.DeActivateContext(new);
  ClassManager.ActivateContext(old);
  end;
end;

Forme compacte

var old:Integer;
begin
  old := ClassManager.ActivateContext(ClassManager.AllocTranContext);
  try
   ClassManager.BeginTran;
   try
     ...
     ClassManager.Commit;
   except
   ClassManager.RollBack;
   end;
  finally
  ClassManager.ActivateContext(old);
  end;
end;

Voir aussi


Gestion des transactions (CM)Développement DSM