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

SQL Firebird Discussion :

Comment relire une donnee avant un commit ?


Sujet :

SQL Firebird

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 51
    Points
    51
    Par défaut Comment relire une donnee avant un commit ?
    Bonjour,

    Est-il possible de relire une donnée avant un commit ?
    Je m'expliquer :

    Le contenu de la colonne Compteur de la table TABCPT = 100

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    StartTransaction
    SELECT Compteur FROM Tabcpt Where CodeCpt = 'NFF'
    Update TABCPT Set Compteur = 50 Where CodeCpt = 'NFF'
    Select Compteur From TABCPT Where CodeCpt = 'NFF'
    Commit
    Le 2e SELECT donne 100 et non 150.
    Ce qui est normal puisque à ce stade, il n'y a pas eu encore de commit.

    N'y-a-t-il pas moyen d'obtenir 150 à ce stade ?
    peut-être avec les niveaux d'isolement ?

    Cordialement :-)

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 902
    Points : 6 026
    Points
    6 026
    Par défaut
    150 ? plutôt 50, non ?

    Mais à quoi cela sert-il ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    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
    Dans la même transaction, tu devrais voir le changement, avant le commit, mais pas dans les autres transactions
    ton test à quelque chose de pas bien fait

    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
    19
    20
    SQL> SET TRANSACTION WAIT SNAPSHOT NO AUTO UNDO LOCK TIMEOUT 10;
    SQL> select * from country where country='France';
     
    COUNTRY         CURRENCY   
    =============== ========== 
    France          FFranc     
     
    SQL> update country set currency='Euro' where country='France';
    SQL> select * from country where country='France';
     
    COUNTRY         CURRENCY   
    =============== ========== 
    France          Euro       
     
    SQL> rollback;
    SQL> select * from country where country='France';
     
    COUNTRY         CURRENCY   
    =============== ========== 
    France          FFranc
    ceci dit, tu peux utiliser RETURNING aussi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL> UPDATE country SET currency='Euro' WHERE country='France' RETURNING currency;
     
    CURRENCY   
    ========== 
    Euro       
     
    SQL> UPDATE country SET currency='Euro' WHERE country='France' RETURNING currency, country;
     
    CURRENCY   COUNTRY         
    ========== =============== 
    Euro       France
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 51
    Points
    51
    Par défaut
    Bonjour,

    Merci Infiniment pour votre aide
    Je vais revoir, en effet, mon code : j'ai du mal à
    comprendre ces niveaux d'isolement

    Merci encore

    Cordialement :-)

  5. #5
    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
    Citation Envoyé par asenaici Voir le message
    Bonjour,

    Merci Infiniment pour votre aide
    Je vais revoir, en effet, mon code : j'ai du mal à
    comprendre ces niveaux d'isolement
    c'est plus ton code qui n'est pas bon et ne doit pas utiliser la même transaction
    ce n'est pas là un problème de niveaux d'isolement

    j'aurais pu faire la même chose avec READ COMMITTED
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 51
    Points
    51
    Par défaut
    Bonjour et merci.

    Vous avez raison (comme toujours...) dans mon code, il y avait une table
    qui utilisait une autre transaction...d'où le problème.
    Après correction, je relis, en effet, les données que je viens de modifier
    sans problème tant que je reste dans la même transaction.

    Vous aviez parfaitement raison :-)

    J'avais également oublié de mentionner que mon pseudo code était tiré de code delphi.

    Dans tous les cas, un grand merci pour votre aide.

    NB: Sur le site IBPhoenix il y a un DVD en vente.
    Parle-t-on des transactions ?
    Y-a-t-il des exemples plus complets d'utilisation de transactions en delphi avec concurrence ?
    (exemple : un enrgt est bloqué pour maj pendant qu'un autre poste attend
    la libération de cet enrgt. pour maj également)
    Quelle est la différence entre le DVD Developper et Corporate ?

    Merci d'avance

    Cordialement :-)

  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
    Citation Envoyé par asenaici Voir le message
    NB: Sur le site IBPhoenix il y a un DVD en vente.
    Parle-t-on des transactions ?
    Y-a-t-il des exemples plus complets d'utilisation de transactions en delphi avec concurrence ?
    avec Delphi en particulier non
    mais dans le livre qui est sur le DVD, il y a toute une partie sur les transactions
    http://www.ibphoenix.com/products/books/firebird_book

    Citation Envoyé par asenaici Voir le message
    Quelle est la différence entre le DVD Developper et Corporate ?
    normalement le Developper est pour une personne unique
    le corporate est pour toute l'entreprise, avec un droit de copie au sein de l'entreprise
    the developer DVD is available to individual developers , whilst the Corporate DVD allows the purchaser to make multiple hard copies of the documentation or copies of the DVD for "in house" use only within a commercial oganisation.
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 51
    Points
    51
    Par défaut
    Bonjour

    Merci pour ces renseignements

    Je vais en faire la demande auprès de mon boss

    Cordialement :-)

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/11/2011, 14h06
  2. Transaction, relire une donnée avant le commit
    Par philair100 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 10/01/2011, 14h43
  3. Comment trier une collection avant de l'afficher ?
    Par piloupy dans le forum Struts 1
    Réponses: 10
    Dernier message: 04/05/2007, 08h51
  4. Comment fermer une Tform avant meme qu'elle s'affiche??
    Par Jayceblaster dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 17/05/2006, 11h34

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