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 Procédural MySQL Discussion :

Verrou sur ligne d'une table


Sujet :

SQL Procédural MySQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 17
    Par défaut Verrou sur ligne d'une table
    bonjour,

    J'ai fais pas mal de recherche sur internet, mais je n'arrive pas à trouver, voilà, j'aimerais savoir comment vérrouiller une ligne d'une table sql pour que lorsque je désire la modifier, personne d'autre puisse y accepter. J'ai utiliser la commande select... FOR UPDATE, mais cela n'a pas l'air de fonctionner. Y a t il une fonction pour savoir si le verrouillage se fait bien. J'utilise mysql avec wamp. Autre problème, je n'arrive pas à utiliser NOWAIT avec FOR UPDATE. Si quelqu'un à une synthaxe. Merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 17
    Par défaut
    bon, personne peut m'aider? snif, sinon, après d'autres recherches, on parle beaucoup d'un champs auto_increment, quelqu'un peut il me dire à quoi cela sert. Sinon, pour mon vérouillage de ligne, j'ai bien peur de deoivr contourner le problème en rajoutant un champs que je changerais à chaque fois. Mais j'espère qu'il existe une autre solution. J'ai trouvé beaucoup de verrouillage sur des tables, mais pas sur un enregistrement.

  3. #3
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    Deux choses : Le verrouillage par ligne n'est possible que pour innoDb, avec MyIsam c'est uniquement par table. De plus il me semble que les verrous sont basés sur les indexes (la clef primaire je suppose) et que toutes les lignes balayées par la requête sont verouillée, c'est à dire que si la requête ne passe pas par un indexe et fait un scan complet de la table tout son contenu sera verouillé.

    auto_increment sert généralement à avoir automatiquement un identifiant pour chaque ligne sans avoir à aller récupérer à la main le numéro suivant (si on veut qu'ils se suivent), ce qui serait pénible et poserait justement des problèmes d'accès concurrent. Ca peut limiter le besoin de poser des verrous.

    Sinon pour tester... ben il faut une table, mettre quelques données dedans, lancer deux clients mysql et tanter différentes modifs (même ligne, lignes différentes...) et veillant à ne pas avoir l'autocommit d'activé.

  4. #4
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 1
    Par défaut REPONSE EN RETARD
    En fait pour ce genre de projet moi je ne bloque pas la ligne mais je crer un table temp_article à chaque fois qu'il y a un code article inserer dans mes donnee de modifications alors ce code article vas dans la table temp_article ensuite a chaque fois vous parcourer avec l'article que vous voulez utiliser dans la table temp voir si l'article est déjà utiliser avant de faire certaines opération déçu

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 599
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par egelitros Voir le message
    j'aimerais savoir comment vérrouiller une ligne d'une table sql pour que lorsque je désire la modifier, personne d'autre puisse y accepter
    La pose d'un verrou de type exclusif sur une ou plusieurs ligne(s) n'interdit pas totalement l'accès à ces lignes : la lecture reste possible, seules les modifications (update et delete) sont interdites
    La pose d'un verrou de type share autorise tous les accès en lecture
    La clause "FOR UPDATE" pose un verrou exclusif qui est libéré lors du COMMIT

    Citation Envoyé par egelitros Voir le message
    . J'ai utiliser la commande select... FOR UPDATE, mais cela n'a pas l'air de fonctionner.
    C'est à dire, comment avez vous testé, quel résultat était attendu, quel résultat avez vous obtenu ?

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

Discussions similaires

  1. Opération sur lignes d'une table
    Par gilles_906 dans le forum Développement
    Réponses: 4
    Dernier message: 14/10/2012, 16h21
  2. [WD14] Double-Clic sur ligne d'une table
    Par WindeveloP dans le forum WinDev
    Réponses: 5
    Dernier message: 26/02/2010, 22h08
  3. Afficher nombre de lignes d'une table située sur une autre feuille
    Par nemone dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 08/12/2006, 16h28
  4. Réponses: 1
    Dernier message: 19/05/2006, 17h33
  5. Réponses: 6
    Dernier message: 21/04/2006, 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