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

MySQL Discussion :

Saut d'ID dans champ auto-incrément


Sujet :

MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Points : 97
    Points
    97
    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
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    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
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Points : 97
    Points
    97
    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 bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 760
    Points : 52 541
    Points
    52 541
    Billets dans le blog
    5
    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...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Points : 97
    Points
    97
    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
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    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 ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Points : 97
    Points
    97
    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
    4 051
    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 : 4 051
    Points : 9 386
    Points
    9 386
    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
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    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 ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 130
    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 : 10 130
    Points : 38 543
    Points
    38 543
    Billets dans le blog
    9
    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.

  11. #11
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut saluts92.

    Citation Envoyé par saluts92
    il y en a une pour moi, je m'en sers pour la facturation.
    Comme le dit escartefigue, vous n'avez pas compris ce que représente dans une table, un identifiant auto incrémenté.
    Il n'a qu'un rôle technique dont le but est de rendre unique chaque ligne dans une table.
    Voire aussi de créer des liens en utilisant les clefs étrangères.

    Si vous avez besoin d'un identifiant porteur d'une information, dans ce cas il ne faut pas utiliser un identifiant "auto incrémenté".
    Par exemple, faire l'association du numéro du client avec la date du jour de la création de votre facture.

    Normalement, c'est une définition fonctionnellement qui doit se faire lors de la modélisation de votre base de données.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    développeur web amateur
    Inscrit en
    Janvier 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2018
    Messages : 40
    Points : 35
    Points
    35
    Par défaut numérotation de facturation
    Citation Envoyé par CinePhil Voir le message
    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.
    reBonjour Philippe,

    Pour info, les règles de comptabilité françaises imposent une liste SANS trous des numéro de factures.
    Tu peux à la limite sauter un ou deux numéro par an, mais s'il t'en manque quelque pour cent, c'est susceptible de déclencher un controle fiscal, nos amis contrôleurs considèrent que c'est le symptome d'une manipulation de l'outil de facturation et sont très chatouilleux sur ce point.
    Donc, pas de trous dans la liste est TRES important.

    Cordialement
    Roland

  13. #13
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par RolandGautier Voir le message
    Pour info, les règles de comptabilité françaises imposent une liste SANS trous des numéro de factures.
    Et alors ?
    On parle ci-dessus d'un identifiant technique clé primaire auto-incrémenté qui est utilisé en tant que numéro de facture, ce qui est une mauvaise pratique.
    La solution au problème posé a été donnée plus haut dans la discussion : une colonne numero_facture (ou un nom similaire) qui sera alimentée par un trigger réalisant l'incrémentation au moment de l'enregistrement.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 !

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    développeur web amateur
    Inscrit en
    Janvier 2018
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : développeur web amateur
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2018
    Messages : 40
    Points : 35
    Points
    35
    Par défaut facturier auto incrémenté
    Tout à fait d'accord, j'avais vu la proposition.
    Je tentais juste d'expliquer l'insistance de saluts92 sur ce point précis.

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

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