|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2004 Messages : 45 ![]() |
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. |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
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 * * * * * |
|
01
|
|
|
#3 |
|
Invité de passage
![]() Inscription : avril 2004 Messages : 45 ![]() |
merci mais cela ne m'aide pas trop!
|
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
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 * * * * * |
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : avril 2004 Messages : 45 ![]() |
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. |
|
|
00
|
|
|
#6 |
![]() ![]() |
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 ! |
|
00
|
|
|
#7 |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 274 ![]() |
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. |
|
|
00
|
|
|
#8 |
![]() ![]() |
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 ! |
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : avril 2004 Messages : 45 ![]() |
L'idée de CinePhil me parait intéressante et à creuser.
Merci beaucoup. |
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Inscription : août 2008 Messages : 1 274 ![]() |
Cinephil, je parlais de l'utilisation de LOCK IN SHARE MODE ou FOR UPDATE pour locker les lignes le temps de la saisie.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com