IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Rollback ne marche pas avec interbase


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 65
    Points : 64
    Points
    64
    Par défaut [résolu]Rollback ne marche pas avec interbase
    Salut, j'utilise la version 6 open source d'interbase. Quand j'execute deux requetes successivements et que la dernière échoue, la première requète est validée malgré le rollback. Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    try
    //DM.qsql : Est un tquery que j'ai deposé dans le module de données DM
    //Première requete
       DM.Qsql.sql.clear;
       DM.QSql.sql.add('update service set cd_service=1)   ;
       DM.qsql.execsql;
    //Deuxième requete
       DM.qsql.sql.clear;
       dm.qsql.SQL.Add('insert into HIST_RATTACHEMENT(id_rat) values (1));
       dm.qsql.execsql;
       dm.qsql.sql.clear;
       DM.qsql.sql.add('commit');//Pour effectuer la validation dans la base
    except
       dm.qsql.sql.clear;
       DM.qsql.sql.add('rollback');
       dM.qsql.execsql;//Pour annuler en ca d'echec
     
     end;
    Mais même si la deuxième requete echoue, le update de la première requète est validé malgré le rollback qui est executé.
    Qui peux m'expliquer pourquoi? Merci

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2002
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 16
    Points : 18
    Points
    18
    Par défaut
    Quand tu exécutes une requête SQL le commit se fait automatiquement à la fin donc le rollback ne sert à rien....

    Je ne connais pas beaucoup interbase mais avec une connection ADO il y a une commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomdetaconnectionADO.beginTrans
    (à placer avant le try)

    et à la fin tu utilises la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomdetaconnectionADO.commitTrans
    (à la fin de la deuxième requête)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nomdetaconnectionADO.RollbackTrans
    (dans le except)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 51
    Points : 60
    Points
    60
    Par défaut rollback ne marche pas avec interbase
    Ppour éviter ce genre de soucis j'utilise l'objet database et je gère mes transactions à son niveau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    try
       if not maDatabase in Transaction then
          maDatabase.starttransaction;
     
      [requete]
      maDatabase.commit;
    except
      maDatabse.rollback;
    end;
    De cette manière je n'ai pas de soucis sur le rollback.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/06/2006, 16h09
  2. [PHP-JS] Marche pas avec le Javascript?
    Par MinsK dans le forum Langage
    Réponses: 3
    Dernier message: 04/05/2006, 14h24
  3. [VB6] TypeOf ne marche pas avec les Label ?
    Par belfaigore dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 21/04/2006, 13h36
  4. [CSS] Bug IE avec height ne marche pas avec les %
    Par El Riiico dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 23/06/2005, 17h11
  5. [xhtml][css] bouton du form ne marche pas avec IE6
    Par chinouk dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 14/06/2005, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo