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 :

[SQL SERVER 2008] Clé primaire VARCHAR + IDENTITY


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 48
    Par défaut [SQL SERVER 2008] Clé primaire VARCHAR + IDENTITY
    Bonjour à tous,

    J'essai de créer une clé primaire composée avec une partie varchar et une partie compteur ...

    ex :

    ABB001
    ABB002
    ABC000
    ABJ000

    Parait il que c'est faisable avec Oracle mais sous Sql Server je n' arrive pas à faire que la sequence redemarre à chaque changement du varchar !?

    Merci d'avance.

  2. #2
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Quel est l’intérêt de créer une colonne composée d'une combinaison de valeurs ?
    Autant définir la clef primaire sur 2 colonnes dont ne sont pas concaténées.

  3. #3
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 48
    Par défaut
    Desole, je me suis peut etre mal exprimer ...

    C'est ce que je cherche à faire, une clé composée de deux colonnes.

    Seulement je souhaite que la numerotation reparte de 0 à chaque changement de la chaine de caractere de la premiere colonne :

    'AAA' + '000'
    'AAA' + '001'
    'BAB' + '000'

    Je sais pas si je suis plus compréhensible comme ca ^^

  4. #4
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    A éviter! c'est une clef métier que vous créez.

    Une PK en VARCHAR est également a proscrire...
    Faites une PK autoincrementée, stockez la partie VARCHAR comme vous dites dans une colonne... et gérez votre numérotation via une vue en vous basant sur une fonction de RANKING...

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2003
    Messages : 733
    Billets dans le blog
    8
    Par défaut
    Oui, comme cela a été dit par iberserk, il est plus “normal” et plus sûr d'utiliser une PK basée sur des champs en Autoincrement.

    En revanche, si les 2 champs (chaine caractère et chaine représentent une numérotation) doivent représenter une clé unique (ce qui semble être le cas, puisque tu as déjà prévu de bâtir une clé primaire sur ces 2 champs), saches que l'attribution d'une clé applicatif (ou métier) unique est une opération très délicate et très subtile, notamment dans un contexte multi-utilisateurs avec des accès concurrents, et ce n'est pas uniquement avec une “vue basée sur les fonctions de ranking ..” que tu vas t’en sortir !
    Il te faudra, dans tous les traitements qui seront chargés de l'attribution des clés unique (je parles de tes 2 champs clés uniques), être très fin avec les niveaux d'isolation des transactions.

    Sur ce point je te conseille de lire l’article de SQLPro qui traite du sujet et qui apporte une solution fiable :
    compteurs relatifs, avec SQL Server

    A+

  6. #6
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 48
    Par défaut
    Genial "hmira" c'est exactement ce que je recherchai ...

    Merci de votre aide.

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/02/2015, 12h47
  2. SQL Server 2008 : les nouveautés . . .
    Par SQLpro dans le forum MS SQL Server
    Réponses: 51
    Dernier message: 12/05/2010, 16h10
  3. [SQL Server 2000] Le type varchar
    Par miya dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/04/2007, 09h06
  4. [SQL Server] violation clé primaire
    Par elleana dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/12/2006, 12h30
  5. [Sql server 2005] Clé primaire auto increment
    Par nemya dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 17/10/2006, 22h58

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