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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    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
    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 très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    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
    22 010
    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 : 22 010
    Billets dans le blog
    6
    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 très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    275
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 275
    Par défaut
    si cela a énormément d'importance

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    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, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 973
    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 973
    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.

    @+

+ 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