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

Connexion aux bases de données Firebird Discussion :

Problème Syntaxe COMMIT


Sujet :

Connexion aux bases de données Firebird

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Problème Syntaxe COMMIT
    Quelqu'un saurait-il m'aider à comprendre pourquoi les 2 lignes suivantes ne se compile pas dans "IBExpert" en tant que procédure stockée (pour une base de données Firebird 1.5)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE CLIENTS SET codemagasin=0; /* 0 pour l'exemple */
    commit;
    sachant que avant de mettre "commit" ça se compile tout à fait bien et fonctionne sauf que ça provoque des "deadlock"
    et en ajoutant le commit j'obtiens une "parsing error" au cours de la compil par IBExpert...
    merci

  2. #2
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    déjà au sein d'une procédure stockée on ne peut utiliser de COMMIT
    des points de sauvegarde oui, mais pas des commit
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Aïe ... comme mon client est un éxecutable et que la seule manière que j'ai d'agir (modifier) sur les données est l'utilisation d'états (je crée des états avec fastreport), j'utilise les procédures stockées ... n'ai-je donc aucun moyen pour "committer" mes changements ?

  4. #4
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    ben si
    le commit a lieu après l'execution de la procedure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EXECUTE PROCEDURE BLA;
    COMMIT;
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    oui mais dans mon cas, l'appel de la procédure se fait par un objet "requête IBX" de Fastreport ; serait-ce là que le code que vous proposez devrait se trouver ?

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    et j'ai oublié de préciser, avec FastReport, les objets IBX sont limités à TfrBDEQuery pour faire des SQL search (select ...) ; c'est pour cela que je pense que je ne pourrai pas y faire un execute + commit ... et que j'aurais voulu inclure le commit dans la procedure que j'appelle par le Select.

  7. #7
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    il suffit de faire le commit après le select sur la transaction liée à l'objet qui fait le select
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Il me semble que l'objet utilisé pour le search ne permet pas d'enchainer les lignes : en effet voici la ligne que j'ai dans le texte SQL de mon objet Query8

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT VAL_FIDEL  FROM etat_remise_fid(5,2,:notiers)
    et qui me donne accès ensuite à : [DialogForm.Query8."VAL_FIDEL"]

    En rajoutant commit l'objet ne renvoie plus rien ...
    et j'ai également essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    begin 
     select ... ;
     commit;
    end
    L'objet ne "répond plus" ...


  9. #9
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    il y a bien un objet quelquonque qui gère la transaction, genre TIBTransaction
    c'est sur lui qu'il faut appliquer le commit
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Sans doute mais je pense que je n'ai pas accès à ce code ; comme je disais mon client est un executable et les seules évolutions que je peux apporter passent par un éditeur d'état (FastReport) avec ses objets (par ex le TfrBDEQuery pour le search) mais ensuite je n'ai plus le contrôle ...
    Ce que je vais faire pour avancer c'est d'autres tests parce que j'ai noté que la configuration où les deadlocks se produisent est une configuation avec Firebird 151 (et c'est cette configuration qui est en exploitation) et j'ai une autre configuration similaire pour mes essais mais elle fonctionne avec Firebird 153 et là le problème des deadlock ne se produit pas. Je vais commencer par clarifier ça.
    EN tous cas, merci pour les conseils apportés jusque là. On peut peut-être fermer cette discussion et si j'ai plus d'éléments après les vérifications que je me propose de faire, je rouvrirai un sujet.
    ENcore merci.

  11. #11
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE CLIENTS SET codemagasin=0;
    Met a jour tous les clients, c'est le genre de traitement qui forcément tres risqué en terme de deadlock... Et si elle fonctionne va bloquer (deadlock) tous les autres traitements qui souhaiteraient modifier un client. Donc a éviter mais s'il n'y a pas d'autres solution, c'est en tous les cas à commiter au plus vite. Dans une transaction la plus courte possible.

    Ce n'est pas le genre de chose qu'on va mettre dans la meme transaction qu'un traitement d'édition qui peut durer longtemps.

    Pour situer un peu mieux le probleme évoqué :

    Concernant les transactions ca peux englober tout un tas de traitement, des selects, updates, appel de PS (qui elles meme font des mises à jours etc.) et donc il est normal que ce soit le client qui lance toute ces opérations qui au final puisse dire s'il valide tout ca ou non (commit ou rollback.).

    Imaginez que votre PS puisse commiter la transaction. Comment pourait elle prendre la bonne décision puisqu'elle n a pas connaissance des traitements fait avant son lancement et ceux apres.

  12. #12
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par Barbibulle
    Pour situer un peu mieux le probleme évoqué :

    Concernant les transactions ca peux englober tout un tas de traitement, des selects, updates, appel de PS (qui elles meme font des mises à jours etc.) et donc il est normal que ce soit le client qui lance toute ces opérations qui au final puisse dire s'il valide tout ca ou non (commit ou rollback.).

    Imaginez que votre PS puisse commiter la transaction. Comment pourait elle prendre la bonne décision puisqu'elle n a pas connaissance des traitements fait avant son lancement et ceux apres.
    tu peut expliqué plus svp
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

Discussions similaires

  1. [Tableaux] problème syntaxe concaténation variable
    Par mussara dans le forum Langage
    Réponses: 3
    Dernier message: 01/03/2006, 11h24
  2. [Installation] Problème de commit
    Par pamic dans le forum CVS
    Réponses: 3
    Dernier message: 08/07/2005, 17h35
  3. Problème syntaxe sql
    Par devdev dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 11/04/2005, 16h31
  4. problème syntaxe sql
    Par mpat dans le forum ASP
    Réponses: 6
    Dernier message: 01/02/2005, 19h28
  5. [CVS] Problème de commit (Could not open lock file)
    Par 1tox dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 19/10/2004, 11h22

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