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

JDBC Java Discussion :

JDBC Locking row : SELECT FOR UPDATE


Sujet :

JDBC Java

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 20
    Points : 10
    Points
    10
    Par défaut JDBC Locking row : SELECT FOR UPDATE
    Bonjour à tous,

    Est ce que vous avez un example/tuto sur l'utilisation du SELECT FOR UPDATE (ou autre solution de lock) dans un usage multi thread (quand un thread prend le controle d'un select for update les autres thread ne doivent pas en faire jusqu'à que celui qui controle commit et donc unlock).

    Merci à vous je suis vraiment bloqué depuis 3 jours.

  2. #2
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Deja, est ce que la base de données est utilisée par plusieurs utilisateurs en meme temps ?
    Quel SGBD ?

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2011
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 20
    Points : 10
    Points
    10
    Par défaut
    oui c'est une application multi-thread, et donc le même code pour tout les thread d'où mon besoin de locker la ligne pour qu'un autre thread n'ait pas accés pendant qu'un autre travail/update dessus.

    SGBD : MySQL (mais je dois supporter plusieurs d'autres apres)
    Type : Innodb,
    transaction-isolation = READ-COMMITTED

    Donc voilà le code que j'ai fais en utilisant SELECT FOR UPDATE ne fonctionne pas car deux thread font les même opération (select for udapte, puis update) sont que l'un des deux soit bloqué. Et donc deux requetes update sont executé et la valeur de la deuxieme est persisté alors que cà ne devrait pas etre le cas.......

  4. #4
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    De memoire, une requete for update bloque la table au niveau du SGBD.

    Quand je parlais d'utilisateurs, je ne parlais pas de thread mais d'utilisateurs. Le but, c'est de savoir si un seul programme accede à la base de données. Dans ce cas, on peut utiliser un semaphore pour tester si une requete est en cours.
    Mais si plusieurs utilisateurs peuvent acceder à la base (depuis des postes différents), il va falloir faire autrement...

Discussions similaires

  1. Select for update nowait skip locked en oracle 11
    Par bruno270579 dans le forum SQL
    Réponses: 2
    Dernier message: 29/06/2012, 08h12
  2. SELECT FOR UPDATE SKIP LOCKED ORA-02014
    Par Moostiq dans le forum PL/SQL
    Réponses: 3
    Dernier message: 21/12/2011, 14h30
  3. select for update LOCK 3 10gR2
    Par petitfrere dans le forum Oracle
    Réponses: 1
    Dernier message: 01/12/2006, 18h52
  4. [MySql5]select ... for update
    Par melou dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/04/2006, 11h11
  5. [Verrou] SELECT FOR UPDATE
    Par e1lauren dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 13/10/2005, 17h06

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