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

Requêtes MySQL Discussion :

Verrouiller un enregistrement


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué Avatar de arcane
    Inscrit en
    Avril 2003
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 311
    Points : 178
    Points
    178
    Par défaut Verrouiller un enregistrement
    Bonjour,

    Est-ce possible de verrouiller un seul enregistrement?
    par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    matable
    id   champ1      champ2
    1    indefini    
    2    madonnée2   autre donnée
    3    madonnée3   autre donnée
    je voudrais faire un formulaire ou je selectionne toutes mes lignes, (la ligne 1 apparait aussi)
    mais que lorsque je fais un
    UPDATE matable SET `champ1`='donneemodifiee', `champ2`='...' WHERE (id=1);
    je voudrais que la modification ne se fasse pas. (ou suppression)
    Elle peut se faire uniquement sur les autres lignes.
    je pense qu'il faudrait sans doute gérer des droits?
    je sais quelle ligne il faut verrouiller, il y en a qu'une et c'est toujours la même.

    Merci

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Pas sûr d'avoir bien compris.
    Tu souhaites que la modification se fasse sur toutes les lignes sauf sur celle dont champ1 = indéfini ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE TaTable
    SET champ1 = 'donneemodifiee', champ2 ='...' 
    WHERE id<>1;
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre habitué Avatar de arcane
    Inscrit en
    Avril 2003
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 311
    Points : 178
    Points
    178
    Par défaut
    En fait, j'ai un formulaire dans lequel j'affiche la table entière.
    j'ai la possibilité via ce formulaire de modifier n'importe quelle ligne.
    (par ex. avec une liste déroulante)
    je modifie alors l'enregistrement concerné.
    je peux donc avoir les requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    UPDATE matable SET `champ1`='donneemodifiee', `champ2`='...' WHERE (id=1);
    ou : 
    UPDATE matable SET `champ1`='donneemodifieex', `champ2`='...' WHERE (id=2);
    je voudrais que la première requête ne puisse pas se faire, mais la deuxième, oui.
    je pourrais faire un test (si id=1 alors je ne modifie pas) mais j'ai pas mal de scripts qui fonctionnent comme cela
    et je n'ai pas envie de les modifier, car si je réinitialise la base, ce ne sera pas forcément id=1 que je ne voudrais pas changer.

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

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Points : 1 249
    Points
    1 249
    Par défaut
    MySQL donne les droits par table donc impossible de directement bloquer les modifications sur une partie d'une table (d'ailleurs ça risque d'être aussi le cas pour les autres serveurs).

    Alternatives possibles :
    • refuser de le faire au niveau applicatif. Ça marche toujours.
    • tenter de passer par une vue modifiable qui ne voit pas l'enregistrement tabou. Je "pense" que ça devrait le faire.
    • peut-être faire la modification par l'intermédiaire d'une procédure stockée (mais je ne sais pas si elle peut toucher à une table interdite à l'utilisateur).

  5. #5
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Bonjour,

    Je pense que la solution la plus sûr est de poser un TRIGGER mais MySQL sans exceptions est difficile à prendre en main.
    Je pense que mon article concernant la gestion des erreurs pourra t'aider.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  6. #6
    Membre habitué Avatar de arcane
    Inscrit en
    Avril 2003
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 311
    Points : 178
    Points
    178
    Par défaut
    Finalement, je vais opter pour la solution applicative.
    Un peu long, mais je sais faire.

    Merci

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

Discussions similaires

  1. Verrouiller un enregistrement
    Par Pierre59 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 16/02/2007, 17h32
  2. Verrouiller un enregistrement
    Par touhami dans le forum InterBase
    Réponses: 5
    Dernier message: 15/03/2006, 11h59
  3. Verrouiller un enregistrement
    Par PAUL87 dans le forum Access
    Réponses: 32
    Dernier message: 10/12/2005, 23h15
  4. Verrouiller un enregistrement lors d'un select
    Par RamDevTeam dans le forum Bases de données
    Réponses: 5
    Dernier message: 01/11/2005, 17h20
  5. verrouiller un enregistrement - VBA/Access
    Par sebouratif dans le forum Access
    Réponses: 2
    Dernier message: 07/10/2005, 13h03

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