Bonjour,
Je rencontre un comportement que je n'explique pas concernant la gestion des transactions. J'ai une méthode gestionClient qui va insérer dans trois tables (client,adresse,log), si l'un des inserts dans client ou adresse se passe mal, je souhaite annuler la transaction, j'utilise alors les fonctions suivantes : HTransactionDébut(Ecommerce, "CLIENT, ADRESSE") //Où Ecommerce est le nom de ma connexion //CODE... SI un controle passe pas ou si un insert échoue, je lance HTransactionAnnule(Ecommerce)
Ce système fonctionne parfaitement, les transactions sont correctement annulées.
Par contre, une autre méthode gestionCommande, insère dans trois tables (COMMANDE, ARTICLE et log), j'utilise les mêmes fonctions windev pour gérer les transactions, cependant celles-ci ne fonctionnent pas, la méthode HTransactionAnnule retourne bien 1 mais lorsque l'insertion d'articles échoue à cause d'un contrôle, l'insertion de la commande effectuée juste avant n'est pas annulée. Seule la table LOG est capable d'être annulé dans ma méthode. Etant donné que j'utilise la même manière de faire pour les deux méthodes, je n'explique pas cette différence de comportement, quelqu'un aurait-il un avis svp ?
Au vu du comportement, je soupçonne que la différence pourrait provenir de la définition des tables de données, il y aurait-il des prérequis à ce niveau svp ?
Merci |