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

MS SQL Server Discussion :

"Nettoyer" les champs Identity auto-incrément


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 274
    Par défaut "Nettoyer" les champs Identity auto-incrément
    Bonjour,

    Existe-t-il un moyen pour faire en sorte que mon serveur SQL utilise des clés primaire identity (de format int) qui ont déjà été supprimés ? Je m'explique.

    Si j'ai des données dans une table du genre

    id nom
    1 Jean
    2 Maurice
    3 Robert
    4 Simon
    5 Denis

    et que je supprime l'enregistrement (3 Robert), est-t-il possible de faire comprendre au serveur qu'il doit utiliser l'id 3 lors d'un prochain enregistrement ?

    Mon objectif est d'éviter d'atteindre la limite des int dans les clés primaires de mes tables lorsque mon application aura été utilisée sur une longue période.

    Merci pour vos info

    Steve

  2. #2
    Membre expérimenté
    Inscrit en
    Février 2006
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 185
    Par défaut
    Salut

    C'est DBCC CHECKIDENT qui permet de le faire.

    Pour forcer la serveur à mettre la bonne valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBCC CHECKIDENT (table,RESEED,valeur_actuelle)
    valeur_actuelle est le dernier id generé par le serveur que tu peux aussi avoir en lançant Merci

    Citation Envoyé par rohstev
    Bonjour,

    Existe-t-il un moyen pour faire en sorte que mon serveur SQL utilise des clés primaire identity (de format int) qui ont déjà été supprimés ? Je m'explique.

    Si j'ai des données dans une table du genre

    id nom
    1 Jean
    2 Maurice
    3 Robert
    4 Simon
    5 Denis

    et que je supprime l'enregistrement (3 Robert), est-t-il possible de faire comprendre au serveur qu'il doit utiliser l'id 3 lors d'un prochain enregistrement ?

    Mon objectif est d'éviter d'atteindre la limite des int dans les clés primaires de mes tables lorsque mon application aura été utilisée sur une longue période.

    Merci pour vos info

    Steve

  3. #3
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 274
    Par défaut
    si je comprends bien cette méthode permet de "forcer" la valeur de l'identité. Mon désir est plutôt que le serveur se débrouille pour combler les lignes vides de ma table lorsqu'il fait une insertion, afin d'éviter d'atteindre trop vite la valeur maximale du int de ma clé primaire identité.
    Est-ce possible ?

    Steve

  4. #4
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    int

    Nombre entier dont la valeur est comprise entre - 2^31 (- 2 147 483 648) et 2^31 - 1 (2 147 483 647). La taille de stockage est de 4 octets. Le synonyme SQL-92 de int est integer.


    donc, a moins de rentrer la Chine+l'Inde en totalité, t'es pas près d'arriver au max de l'int.


  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 999
    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 999
    Billets dans le blog
    6
    Par défaut
    votre demande est TOTALEMENT abérante. Si tel était le cas vous risquez d'être dans une merde noire à cause du paradoxe temporel inhérent à toute gestion de données dans une BD !
    Lisez l'article que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/clefs/

    Par principe une clef attribuée n'est JAMAIS réutilisée....
    Constatez le vous même : immatriculation de véhicule, n° de billet de banque, n° de compte bancaire !

    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
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 274
    Par défaut
    ok, merci pour vos infos ! En fait j'ai supprimé la clé primaire et j'ai mis les 2 clés étrangères, qui composaient cette table, en clé primaire...
    et effectivement, après réflexion, comme le souligne serge0934, je suis pas prêt d'arriver au max de mon int.

    ps : SQLpro, vous êtes toujours trop vulgaire et "rabat-joie" à mon goût dans vos réponses pour un modérateur/expert, même si je ne doute en aucun cas de vos compétences. Merci quand même !

    Steve

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

Discussions similaires

  1. [MySQL] Tester si un champ est auto incrémenté
    Par NiRaDo dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/02/2008, 12h54
  2. Champs virtuel auto incrémenté dans une vue
    Par berceker united dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/06/2006, 14h33

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