Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/07/2011, 08h49   #1
Futur Membre du Club
 
Inscription : juillet 2004
Messages : 49
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 49
Points : 15
Points : 15
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.
djskyz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 10h59   #2
Modérateur
 
Avatar de Jinroh77
 
Homme Alexandre Chemla
Consultant en Business Intelligence
Inscription : février 2006
Messages : 1 773
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Chemla
Âge : 28
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : février 2006
Messages : 1 773
Points : 1 837
Points : 1 837
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.
__________________
Alexandre Chemla - Consultant MS BI chez Masao
Jinroh77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 14h20   #3
Futur Membre du Club
 
Inscription : juillet 2004
Messages : 49
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 49
Points : 15
Points : 15
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 ^^
djskyz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2011, 14h28   #4
Membre Expert
 
Avatar de iberserk
 
Homme Bruno IGNACE
Architecte de base de données
Inscription : novembre 2004
Messages : 1 299
Détails du profil
Informations personnelles :
Nom : Homme Bruno IGNACE
Âge : 30
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 299
Points : 2 282
Points : 2 282
Envoyer un message via MSN à iberserk
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...
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
iberserk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 14h04   #5
Membre éprouvé
 
Homme Hamid MIRA
Ingénieur développement logiciels
Inscription : septembre 2003
Messages : 177
Détails du profil
Informations personnelles :
Nom : Homme Hamid MIRA
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 : 177
Points : 413
Points : 413
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+
__________________
"Une idée mal écrite est une idée fausse !"
hmira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 09h17   #6
Futur Membre du Club
 
Inscription : juillet 2004
Messages : 49
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 49
Points : 15
Points : 15
Genial "hmira" c'est exactement ce que je recherchai ...

Merci de votre aide.
djskyz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h34.


 
 
 
 
Partenaires

Hébergement Web