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

PostgreSQL Discussion :

Select For Update Nowait


Sujet :

PostgreSQL

Vue hybride

e1lauren Select For Update Nowait 28/09/2006, 20h10
e1lauren Bon voila j'ai réussi à... 28/09/2006, 22h04
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 141
    Par défaut Select For Update Nowait
    Bonjour,

    J'ai un petit problème j'ai 2 sessions différentes et je fais

    Session 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #BEGIN
    # select * from i where i=1 for update nowait;
    i
    ---
    1
    (1 row)
     
    # select * from i where i=2 for update nowait;
    i
    ---
    2
    (1 row)
    Session 2 :
    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
     
    #BEGIN
    # select * from i where i=3 for update nowait;
    i
    ---
    3
     
    -- J'arrive bien à bloquer un enregistrement
     
    # select * from i where i=1 for update nowait;
    ERROR:  could not obtain lock on row in relation "i"
    -- Jusque là normal j'essai de bloquer un enregistrement déja bloqué
     
    # select * from i where i=4 for update nowait;
    ERROR:  current transaction is aborted, commands ignored until end of transaction block
    Et voici le problème, une fois que j'ai eut un " ERROR: could not obtain lock on row in relation "i" " je ne peux plus rien faire a moins de faire un Commit ou un Rollback, mais je ne veux pas perdre le(s) bloquage(s) que j'ai pratiquer avant (ici bloquage de l'enregistrement i=3)

    Si quelqu'un a une solution a ce problème cela m'aiderait beaucoup.
    Merci d'avance

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2003
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 141
    Par défaut
    Bon voila j'ai réussi à elucider (pratiquement ) tout seul ce problème. Après quelques heures à se prendre la tête, j'avais oublié qu'il existait quelque chose de magique : le Savepoint
    Donc voila c'est résolu en créant un savepoint avant chaque "Select for update" et si l'enregistrement est bloqué je reviens juste avant ...

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 26/11/2014, 14h30
  2. Select for update nowait skip locked en oracle 11
    Par bruno270579 dans le forum SQL
    Réponses: 2
    Dernier message: 29/06/2012, 08h12
  3. [MySql5]select ... for update
    Par melou dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/04/2006, 11h11
  4. [Verrou] SELECT FOR UPDATE
    Par e1lauren dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 13/10/2005, 17h06
  5. for update nowait
    Par nono612 dans le forum Oracle
    Réponses: 4
    Dernier message: 28/07/2005, 12h05

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