Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en 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 11/11/2006, 16h59   #1
Membre du Club
 
Inscription : juin 2003
Messages : 83
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 83
Points : 47
Points : 47
Par défaut Auto-increment : valeurs manquantes ?

Bonjour,

mes utilisateurs remplissent la base de données grâce à un REPLACE INTO (oui car possibilité de modification) qui ajoute une vingtaine de lignes lors du post du formulaire.

Mon auto-increment s'incrémente (oui je sais...) normalement mais j'ai constaté que par moment, il sautait jusqu'à 40 unités : ex : passage de la valeur de 95941 à 95982 sans raison.

J'ai vaguement lu des choses sur les accès concurrents et je me demandais s'il y avait un rapport ?
Par exemple, 2 voire 3 utilisateurs font leur "insert" en même temps et MySql gère l'auto-increment de cette manière...

C'est d'autant plus étonnant que mon ancienne table (que j'ai archivée car inutile) contient 37000 lignes avec un incrément de 1 à 37000 donc rien de "perdu".
Je n'ai pas l'impression d'avoir changé mon code mais j'ai un doute (peut etre que REPLACE INTO a remplacé INSERT/UPDATE)

merci pour votre aide

à+

EDIT :

j'ai peut être ma réponse !

Citation:
REPLACE est similaire à une insertion, si il n'y a pas de collision sur la clé unique. Sinon, une verrou exclusif sur l'index de prochaine clé est posé sur la ligne qui sera modifiée.
Qu'en pensez-vous ?
kileak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2006, 10h21   #2
Membre Expert
 
Inscription : août 2002
Messages : 1 036
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 036
Points : 1 166
Points : 1 166
Bonjour,

S'il y a collision sur une clé unique, 'replace' = 'delete' + 'insert', donc dispartion de l'ancien enreg et création d'un nouveau avec incémentation.

http://dev.mysql.com/doc/refman/5.0/fr/replace.html
jeca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2006, 16h23   #3
Membre du Club
 
Inscription : juin 2003
Messages : 83
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 83
Points : 47
Points : 47
Citation:
Envoyé par jeca
Bonjour,

S'il y a collision sur une clé unique, 'replace' = 'delete' + 'insert', donc dispartion de l'ancien enreg et création d'un nouveau avec incémentation.

http://dev.mysql.com/doc/refman/5.0/fr/replace.html
Evidemment !

Ce n'était pas une histoire de vérouillage mais de collision !
Limpide
merci !
à+
kileak est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h10.


 
 
 
 
Partenaires

Hébergement Web