1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    janvier 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 178
    Points : 31
    Points
    31

    Par défaut Saut d'ID dans champ auto-incrément

    Bonjour,

    Sur un de mes sites, j'ai un et un seul programme qui fait un INSERT dans une table avec un champ AUTO-INCREMENT.

    je viens de me rendre compte que assez souvent (1,7% des ID) était "sauté/ignoré".

    Il y a t-il une explication logique à celà ? ou est-ce anormal ?

    D'avance merci

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    janvier 2010
    Messages
    4 514
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : janvier 2010
    Messages : 4 514
    Points : 9 132
    Points
    9 132

    Par défaut

    Bonjour,

    il s'agit en général d'insertions qui n'ont pas était validées (transaction ne se finissant pas par un COMMIT mais par un ROLLBACK).
    Par exemple, une erreur lors de l'insertion peut provoquer ce comportement : L'ID est généré, une erreur survient lors de l'insertion, l'insertion est donc annulée, mais l'ID généré est "perdu".

    Il n'y a donc pas a s'inquiéter, c'est à première vue normal.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    janvier 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 178
    Points : 31
    Points
    31

    Par défaut

    ça je comprends : mais dans mon code lorsque le rollback est fait j'ai un message d'erreur qui est logué (+ 1 mail) : et la je n'en ai quasiment jamais ou en touts ca un nbre insignifiant par rapport au nombre d'ID sauté

    comment expliqué la perte de 10 à 15 ID de suite et cela de façon aléatoire ?

  4. #4
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    17 148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 17 148
    Points : 39 788
    Points
    39 788
    Billets dans le blog
    1

    Par défaut

    Mise à part l'explication logique déjà donnée lié aux transactions annulées, je dirais que probablement MySQL étant connu comme l'un des SGBD les plus pourri, peut être s'amuse t-il à griller quelques auto-incrément pour le simple plaisir d'embêter les développeurs... Non, je plaisante !

    En revanche, cela n'a aucune importance...

    Finissez vous toujours toutes les bouteilles de vins lors d'un repas de famille ?

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    janvier 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 178
    Points : 31
    Points
    31

    Par défaut

    si cela a énormément d'importance

  6. #6
    Modérateur
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    14 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    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 : 14 886
    Points : 28 593
    Points
    28 593
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par saluts92 Voir le message
    si cela a énormément d'importance
    Pourquoi ?

    Un identifiant auto-incrémenté n'est qu'un identifiant technique permettant d'assurer l'unicité de chaque ligne mais il n'a aucune signification sémantique. Que Jean Dupont ait pour identifiant 12 ou 3825 ne délivre aucune information sur Jean Dupont donc on s'en fout !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP...
    « 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 la suite Linux Mageïa !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    janvier 2007
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 178
    Points : 31
    Points
    31

    Par défaut

    il y en a une pour moi, je m'en sers pour la facturation

  8. #8
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 1 414
    Points : 2 980
    Points
    2 980

    Par défaut

    Oui , tu peux te servir de cet identifiant pour tout un tas de choses, pas de problème. Si tu as une table 'Client' avec un idClient auto-incrémenté, c'est complètement normal de retrouver cet identifiant dans la table 'Commandes'.

    Mais normalement, les trous ne devraient pas te gêner. Je serais curieux de voir quelle requête plante parce qu'il y a des trous.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  9. #9
    Modérateur
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    14 886
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    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 : 14 886
    Points : 28 593
    Points
    28 593
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par saluts92 Voir le message
    il y en a une pour moi, je m'en sers pour la facturation
    Et alors ?
    Quelle importance que la facture 5824 soit la suivante de la 5817 ? Ce n'est qu'un numéro.
    Si tu veux une numérotation avec des numéros qui se suivent, ajoute une colonne fac_numero et programme un trigger qui va incrémenter le plus grand numéro utilisé lors de l'insertion d'une nouvelle facture.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP...
    « 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 la suite Linux Mageïa !

  10. #10
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    2 936
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 2 936
    Points : 6 462
    Points
    6 462
    Billets dans le blog
    1

    Par défaut

    Bonjour,

    Cette discussion sur les "trous" de numérotation est archi récurrente.
    Non seulement les "trous" sont une chose tout à fait normale, mais aussi, la séquence de numérotation n'a aucune valeur de chrono.
    Autrement dit, il est tout à fait possible que l'identifiant n° 251 ait été validé après l'identifiant n° 248

    Je préfère préciser ce point car les questions qui précèdent sont symptomatiques d'une mauvaise compréhension du fonctionnement de ces identifiants, et l'usage à tort de ces id comme chrono est malheureusement très fréquent.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/08/2010, 14h55
  2. Création d'un champ "auto-incrémenté" dans une vue
    Par damnn dans le forum Développement
    Réponses: 8
    Dernier message: 20/10/2009, 14h50
  3. Comment obtenir un champs auto incrémenté dans une table DBase IV ?
    Par souminet dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/12/2007, 13h55
  4. Réponses: 1
    Dernier message: 23/07/2007, 20h57
  5. [JDO]Hibernate : Mapping d'un champ auto-incrémenté
    Par brice.antoine dans le forum Hibernate
    Réponses: 4
    Dernier message: 02/04/2004, 10h36

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