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

SQL Procédural MySQL Discussion :

Auto-increment : valeurs manquantes ?


Sujet :

SQL Procédural MySQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 98
    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 !

    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 ?

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    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

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 98
    Par défaut
    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 !
    à+

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

Discussions similaires

  1. auto increment valeur
    Par sadkill dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/05/2007, 15h14
  2. Réponses: 8
    Dernier message: 06/12/2005, 11h33
  3. prochaine valeur de l'auto increment
    Par bp dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 12/05/2005, 15h17
  4. remettre a zero une valeur auto-incrementée
    Par rte dans le forum Requêtes
    Réponses: 4
    Dernier message: 23/09/2004, 01h54
  5. [MYSQL] valeur auto-increment
    Par alex1er dans le forum Requêtes
    Réponses: 5
    Dernier message: 10/07/2003, 12h26

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