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 :

Valeur auto incrément


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 54
    Points : 47
    Points
    47
    Par défaut Valeur auto incrément
    Bonjour ,

    Depuis peu j'ai contacté une façon bizarre dans SQL Server de faire l'auto incrément !!
    En effet j'ai un champs ID auto incrément de valeur 1 puis j'ai effectué les opérations sur cette table j'ai les valeur du Champs ID 1 ---> 99 puis de 1001 --->
    je ne comprends pourquoi SQL Server quitte de 99 a 1001.

    Quelqu'un a une explication a se comportement ??

    Merci d'avance

  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 d'identifiants consommés mais finalement non insérés (transaction annulée explicitement, erreur lors de l'insertion,...).

    Mais techniquement, cela ne pose aucun problème, il n'y a donc aucune raison de s'en inquiéter.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 54
    Points : 47
    Points
    47
    Par défaut
    Bonjour aieeeuuuuu,

    Merci pour tes explications , oui cela ne pose aucun problème mais je m’inquiète de cette façon qu'il fait des auto incrément juste par ce que s'il le fait la valeur max de ID sera vite atteint.

    J'ai pas de procédure stocké , ou de transaction dans ma Base de donnée et mes requêtes d'insertion sont toujours COMMITE(bien écrit ) donc normalement il(SQL Server) devait respecter le pas qui est de 1.

    Oui je suis tout à fait d'accord avec toi sur le fait que techniquement ça ne pose pas problème juste pour des petites application moins de 1 000 d’opération par jours par exemple car si le nombre d’opérations est élevées d'ici quelques années la table ne pourras plus contenir d'élément cas la valeur de ID sera au max.
    Oui y'a des solutions alternantive (bigint , nvarchar(MAX) etc..) comme clé primaire.

    Mais moi je veux savoir pourquoi les valeurs d'auto incrément saute comme ça.

    Microsoft a constate cela ,y'a des explications , un lien ou autre ..

    Merci

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Quand on définit un identifiant auto-incrémenté, il n'y a pas que le pas comme paramètre, il y a aussi le cache. Quelle valeur a été définie ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 54
    Points : 47
    Points
    47
    Par défaut
    Merci bien , je ne savais pas le principe du CACHE sur la clause Identity j'ai parcourut ceci je me suis rendu compte que c'est du a la perte de valeur du cache lors d'un redémarrage de SQL Server :

    Voil la parti du document qui m'a permis de conclure

    Valeurs consécutives après le redémarrage du serveur ou d'autres échecs – SQL Server peut mettre en cache les valeurs d'identité pour garantir les performances, et certaines valeurs affectées peuvent être perdues lors d'un échec de base de données ou du redémarrage du serveur. Cela peut entraîner des intervalles de valeur d'identité à l'insertion. Si les intervalles ne sont pas acceptables, alors l'application doit utiliser un générateur de séquence avec l'option NOCACHE ou utiliser son propre mécanisme pour générer des valeurs clés.

  6. #6
    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,

    Oui y'a des solutions alternantive (bigint , nvarchar(MAX) etc..) comme clé primaire.
    bigint oui, nvarchar(max) non !

    En ce qui concerne le cache, parle-t-on de la valeur initiale ou de SEQUENCE ?

    @++

Discussions similaires

  1. Créer une valeur auto incrémentée selon un modèle
    Par Dr_No dans le forum VBA Access
    Réponses: 3
    Dernier message: 27/01/2015, 14h24
  2. [MySQL] Récupérer valeur auto-incrément après requête DELETE
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/01/2011, 12h36
  3. Réponses: 2
    Dernier message: 27/04/2009, 11h39
  4. [MySQL] récupérer une valeur auto incrémentée
    Par tonton51 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/06/2007, 15h23
  5. récupération valeur id auto incrément
    Par Jovial dans le forum Requêtes
    Réponses: 2
    Dernier message: 31/08/2004, 08h56

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