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

Développement SQL Server Discussion :

Problème auto-incrément SQLServer


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Problème auto-incrément SQLServer
    Bonjour,

    je débute dans l'utilisation de SQLserver et je dois,dans le cadre d'un projet de formation, développer une base de données.
    Mon problème est le suivant:
    j'ai crée plusieurs tables avec un auto-incrément sur la clés primaires,mais sur certaines ce dernier ne fonctionne pas correctement, c'est à dire qu'il "oublie" des valeurs,ça me donne des suites du genre 1,2,3,4,7,8,9 dans la colonne auto-incrémentée.
    Si quelqu'un a une solution ça serait vraiment sympa!!!!
    merci!!

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    SQL Server "n'oublie" pas des valeurs : lorsque vous supprimez une ligne ou que la transaction d'insertion échoue, la valeur de compteur de la colonne est supprimée, mais la valeur du compteur pour la colonne est incrémentée.

    Je n'ai jamais compris le problème que cela pose, car la plupart du temps il s'agit d'une clé purement logique, et on se moque de l'ordre dans lequel les tuples que stocke la table apparaissent.
    Rappelons qu'en SQL, il n'y a pas d'ordre : les colonnes comme les lignes peuvent apparaître dans n'importe quel "ordre", le tuple conserve la même valeur ({1,2,3} équivaut à {2,1,3} par exemple).

    @++

  3. #3
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Si c'est la première fois que vous utilisez des auto-incréments,
    c'est vrai que c'est déroutant : on a l'impression d'un "gâchis" de numéros

    En fait, comme l'a dit elsuket, ces numéros n'ont pas de signification pour l'utilisateur.
    On ne doit s'en servir que pour des usages techniques comme la mise en relation de tables entre elles
    (on pourrait, comme Access en offre la possibilité, prendre des nombres au hasard).

    L'auto-incrément est ce qu'il y a de plus robuste pour identifier un enregistrement.
    Comme le numéro est à usage unique, on est sûr, techniquement, d'identifier chaque enregistrement. C'est une clé primaire idéale.
    La contrepartie est que dès qu'un utilisateur commence à faire une saisie, un numéro est retenu.
    Si l'utilisateur annule finalement sa saisie, le numéro est "perdu".

    C'est pourquoi on ne doit pas utiliser l'auto-incrément pour numéroter des factures par exemple
    (la suite des numéros de facture ne doit pas comporter de trous).
    On doit alors recourir à une numérotation dans un champ séparé.

    La seule signification (pour le développeur) que peut avoir un auto-incrément
    est d'indiquer l'ordre dans lequel les enregistrements ont été créés.
    C'est parfois utile pour savoir ce que les utilisateurs ont fabriqué
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Suite à ce que disait Elsuket, pour avoir une solution, il faut d'abord un problème.

    Si problème il y a (quand même), quel est-il ?
    Most Valued Pas mvp

  5. #5
    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
    Citation Envoyé par Népomucène Voir le message
    Si l'utilisateur annule finalement sa saisie, le numéro est "perdu".

    C'est pourquoi on ne doit pas utiliser l'auto-incrément pour numéroter des factures par exemple
    (la suite des numéros de facture ne doit pas comporter de trous).
    On doit alors recourir à une numérotation dans un champ séparé.
    FAUX : le seul cas ou le n° est perdu est le cas de la suppression, pas de l'annulation d'une saisie en cours !

    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/ * * * * *

  6. #6
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    FAUX : le seul cas ou le n° est perdu est le cas de la suppression, pas de l'annulation d'une saisie en cours !
    J'ai mal rédigé, SQL n'a, en effet, pas ce comportement en cas d'annulation de saise.
    J'étais resté sur le comportement d'Access 2000 qui lui,
    "brûle" un numéro en cas d'annulation de saisie dans une table Access.
    Mes excuses les plus plates pour cette confusion ...
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Points : 1 234
    Points
    1 234
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Mes excuses les plus plates pour cette confusion ...
    Il reste une confusion sur ta formule de politesse
    "les plus plates", c'est ironique.
    Most Valued Pas mvp

  8. #8
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 791
    Points
    4 791
    Par défaut
    Ah bon, mes excuses les plus montagneuses alors ...
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  9. #9
    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
    Un jour Frédéric Lemaître hué par des spectateurs qui n'avait rien compris à la pièce qu'il jouait, a eu cette admirable phrase pleine de contresens :
    "Je vous ais traité d'imbécile, c'est vrai !
    Je m'en excuse... j'ai tort !"

    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/ * * * * *

Discussions similaires

  1. [MySQL] Problème auto-incrément
    Par kinder069 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 09/03/2010, 01h20
  2. Réponses: 9
    Dernier message: 18/11/2009, 17h04
  3. Clé primaire auto incrémentée, problème insertion
    Par barnoufal dans le forum Ruby on Rails
    Réponses: 0
    Dernier message: 12/02/2008, 17h17
  4. Problème d'auto-incrément
    Par rageice dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/12/2007, 23h33
  5. Problème de mise à jour des champs Auto incrémentés avec VB6.
    Par NHenry dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/05/2007, 16h06

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