Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2012, 12h53   #1
Invité de passage
 
Inscription : avril 2004
Messages : 45
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 45
Points : 2
Points : 2
Par défaut InnoDB - Ligne verrouillé

Bonjour,

J'ai une base avec des tables InnoDB.
Je souhaite que le premier utilisateur faisant un select sur une ligne puisse la modifier et que les autres requetes sur cette même ligne soient en lecture seule.
Or, je ne vois pas comment faire.

Voici mon début de code:
SELECT * FROM parent WHERE NAME = 'Jones' LOCK IN SHARE MODE;

Pour info, je me connecte à la base MySQL en php. Mes utilisateurs ne sont pas des utilisateurs MySQL mais uniquement stockés dans une table USER_DB.

Merci par avance de votre aide.

PS: j'ia bien pensé au session, mais je ne comprend pas le mode de fonctionnement.
iloyer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 17h57   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
revenez au Cobol, ce sera plus facile !!!!

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 07/02/2012, 18h02   #3
Invité de passage
 
Inscription : avril 2004
Messages : 45
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 45
Points : 2
Points : 2
merci mais cela ne m'aide pas trop!
iloyer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 22h21   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Vous aider est impossible. Vous pensez en terme de fichiers et voulez utiliser un SGBDR qui n'a rien à voir avec cela.

Commencez par apprendre ce qu'est un SGBDR... et comment il fonctionne. Au bout d'un certain temps, vous verrez que votre demande est idiote.

Donc, à lire :
http://sqlpro.developpez.com/cours/sqlaz/fondements/
http://sqlpro.developpez.com/cours/sgbdr/
http://sqlpro.developpez.com/SGBDR/ReglesCodd/
http://sqlpro.developpez.com/isolation-transaction/

Voilà pour un début...

Il vous restera ensuite à apprendre le langage SQL !
Et malheureusement pour cet apprentissage vous ne pouviez pas faire plus mauvais choix que MySQL !
http://blog.developpez.com/sqlpro/p9...udre-aux-yeux/


A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 22h47   #5
Invité de passage
 
Inscription : avril 2004
Messages : 45
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 45
Points : 2
Points : 2
Cela fait dix ans que je travaille avec un autre SGBDR que MySql donc la base de données relationnelle, je connais merci!

Dans mon ancien systéme, la commande "enregistrement verrouillée" existait; mais là je ne trouve rien de semblable avec mysql/php d'ou ma question.

Merci par avance aux bonnes âmes qui m'apporteront une aide constructive.
iloyer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 10h44   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Si je comprends bien la demande, le processus serait le suivant :

1) User A demande une info au SGBD.
2) La ligne retournée par le SGBD doit être "affectée" à User A en modification
3) User B peut lire la ligne mais ne peut pas la modifier.
4) User A modifie la ligne.
5) Le SGBD enregistre la modification et "libère" la ligne
6) User B peut à son tour accéder en modification à la ligne.

ou

4) User A sort de l'affichage de la ligne sans la modifier
5) Le SGBD doit "libérer" la ligne.
6) User B peut à son tour accéder en modification à la ligne.

Au niveau des données, il y a aurait la règle de gestion suivante :
Un utilisateur peut modifier plusieurs parents et un parent peut être modifié par un seul utilisateur.

MCD :
utilisateur -0,n----modifier----0,1- parent

Tables :
utilisateur (usr_id, usr_nom...)
parent (prt_id...)
prt_modifie_par_usr (pmu_id_parent, pmu_id_utilisateur)

Il faudrait ensuite une procédure SQL qui alimente la table prt_modifie_par_usr pour les parents cherchés par l'utilisateur et qui ne figurent pas déjà dans cette table et qui retourne une union des parents autorisés en lecture seule (ceux qui étaient déjà dans la table) et ceux autorisés en modification (ceux qui sont affectés à l'utilisateur).
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 11h49   #7
Membre Expert
 
Inscription : août 2008
Messages : 1 274
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 274
Points : 1 934
Points : 1 934
Ca n'est pas possible en web car le protocol http est stateless

Fait des recherches sur lock optimiste (souvent gérer à base de timestamp) mais dans ce cas le process est différent :
Ce n'est plus le 1er qui sélectionne qui a gagné mais le 1er qui update (l'idée étant d'éviter le phénomène de "lost update")

Sinon implémente toi même dans l'appli un pseudo lock avec un flag.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 11h55   #8
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Citation:
Envoyé par skuatamad Voir le message
Ca n'est pas possible en web
Qu'est-ce qui n'est pas possible ? Mon processus ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 12h32   #9
Invité de passage
 
Inscription : avril 2004
Messages : 45
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 45
Points : 2
Points : 2
L'idée de CinePhil me parait intéressante et à creuser.

Merci beaucoup.
iloyer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 18h06   #10
Membre Expert
 
Inscription : août 2008
Messages : 1 274
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 274
Points : 1 934
Points : 1 934
Cinephil, je parlais de l'utilisation de LOCK IN SHARE MODE ou FOR UPDATE pour locker les lignes le temps de la saisie.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h42.


 
 
 
 
Partenaires

Hébergement Web