Comment gérer les accès concurrents dans une base MySQL?

Comment gérer les accès concurrents dans une base MySQL? - SQL/NoSQL - Programmation

Marsh Posté le 22-05-2003 à 16:31:39    

Oui si j'ai une table individu avec un champ num_individu en auto increment ; si je récupère le max de num_individu et qu'après j'insère un nouvel individu, si un autre a été inséré entre temps, mon max n'est plus valide... :??:

Reply

Marsh Posté le 22-05-2003 à 16:31:39   

Reply

Marsh Posté le 22-05-2003 à 16:33:53    

Tet2neu a écrit :

Oui si j'ai une table individu avec un champ num_individu en auto increment ; si je récupère le max de num_individu et qu'après j'insère un nouvel individu, si un autre a été inséré entre temps, mon max n'est plus valide... :??:  


 
En tte logique, si tu as choisi une clé auto incrémentée, il faut surtout pas s'amuser à chercher à l'imposer (de tte manière ça rique de gueuler)
 
Il existe une fonction en php qui te retourne la dernière valeur auto incrémentée je crois
 
 
attends je cherche


---------------
Les chats stro bien stoo | http://johnix.free.fr/index.php
Reply

Marsh Posté le 22-05-2003 à 16:37:34    

Johnix a écrit :


 
En tte logique, si tu as choisi une clé auto incrémentée, il faut surtout pas s'amuser à chercher à l'imposer (de tte manière ça rique de gueuler)
 
Il existe une fonction en php qui te retourne la dernière valeur auto incrémentée je crois
 
 
attends je cherche  


 
Mais entre le moment où cette fonction renvoie la dernière valeur et le moment où j'insère mon individu dans la base, comment savoir si max+1 n'est pas occupé par quelqu'un d'autre qui ferait la meme requete que moi pratiquement en meme temps...
Y a pas un moyen de bloquer les insertions dans la table ?


Message édité par tet2neu le 22-05-2003 à 16:40:58
Reply

Marsh Posté le 22-05-2003 à 16:49:56    

bah tu ne specifies pas de valeur pour ton champ en auto increment
et tu peux recuperer le nouvel id créé par mysql_insert_id()

Reply

Marsh Posté le 22-05-2003 à 18:46:34    

Tet2neu a écrit :


 
Mais entre le moment où cette fonction renvoie la dernière valeur et le moment où j'insère mon individu dans la base, comment savoir si max+1 n'est pas occupé par quelqu'un d'autre qui ferait la meme requete que moi pratiquement en meme temps...
Y a pas un moyen de bloquer les insertions dans la table ?


 
en gros si tu ne fais rien de particulier, ça marchera sauf si 2 ajouts lors de la même seconde (très rare)
 
Si tu veux absolument éviter ça, utilise les identifiants de sessions


---------------
Les chats stro bien stoo | http://johnix.free.fr/index.php
Reply

Marsh Posté le 22-05-2003 à 23:15:04    

Même pas, c'est géré au niveau de la connexion.
Le seul moyen de récupérer un identifiant qui ne soit pas celui de la ligne que l'on vient d'insérer, c'est d'avoir fait une autre insertion avec la même connexion à la base, c'est à dire venant du même programme/script

Reply

Marsh Posté le 23-05-2003 à 08:53:40    

yack a écrit :

bah tu ne specifies pas de valeur pour ton champ en auto increment
et tu peux recuperer le nouvel id créé par mysql_insert_id()


je plussoie :jap:
 
un appel à mysql_insert_id() juste après ton insertion et tu auras toujours l'id de l'enregistrement que tu viens d'insérer.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 23-05-2003 à 16:02:23    

Bien bien merci les gars

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed