|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 34 ![]() |
Bonjour à tous
Voilà j'ai un petit problème, j'aimerai savoir comment je pourrais créer une clé primaire personnalisable, par exemple chaque enregistrements devrais avoir une clé primaire commençant par B1 suivis de chiffre ou de lettre peut importe c'est uniquement le début qui importe. Merci à ceux qui prendront le temps de me répondre, bonne journée. pitipilot |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() |
Et quel est le problème (a part que c'est idiot bien sûr...) que vous rencontrez?
Créez la table avec la colonne, définissez la comme clé primaire puis ajoutz vos données avec INSERT?
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 34 ![]() |
Bonjour, mon problème est que j'envoie depuis plusieurs BDD plusieurs enregistrement dans une même Bdd via des jobs. Je verifie le bon fonctionnement des jobs en regardant la concordance des clés primaires. Sauf qu'il faudrait des clés primaires associés à chaque BDD émettrice car sinon, on peut imaginer d'avoir des enregistrements contenant la même PK dans la BDD réceptrice.
Voilà pourquoi il me faudrait un type de clé primaire par BDD émettrice Bonne journée |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() |
Faites une clé composite:
Une Colonne stockant la provenance des données(nom de la base etc) une autre représentant la clé primaire au sein de la base de données.
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#5 | |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 34 ![]() |
Citation:
Il n'y a pas un moyen d'ajouter le nom de la BDD dans la PK directement ? Merci pour vos réponses |
|
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Il suffit de créer deux colonnes, l'une avec ce que vous imposez et l'autre avec un auto incrément par exemple.
Ensuite vous pouvez concaténer les eux dans une vue ! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 34 ![]() |
Le truc c'est que j'ai créer des jobs génériques, il n'y aurait pas moyen d'ajouter le terme imposé en plus dans la PK à chaque insertion ?
|
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Non et cela viole en sus la première forme normale.
DOnc c'est stupide et ne peut conbduire qu'a des ennuis. Autre solution, faire une clef sémantique et une clef technique. A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
|
10
|
|
|
#9 |
|
Invité régulier
![]() Inscription : janvier 2011 Messages : 34 ![]() |
Désolé de ma réponse tardive, j'avais réussi à contourner mon problème mais voilà qu'il se représente à nouveau. Bon dans l'idée j'ai compris maintenant comment faire au niveau de la syntaxe...
Imaginons que j'ai plusieurs champs dont un qui contient ma PK numérotée (1, 2 ,3,...) et un champ vide RecordID par exemple. Je voudrais dans mon trigger instead of insert pouvoir faire par exemple inserted.RecordID = inserted.PK & B2 je me doute que la syntaxe n'est pas la bonne mais voilà l'idée. Bonne journée Pitipilot |
|
|
00
|
|
|
#10 | ||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 670 ![]() |
Bonjour,
Très sincèrement, vous vous compliquez la vie pour rien. Comme vous l'a suggéré SQLPro, il suffit de faire cela dans une vue, et il n'est à mon sens nul besoin de stocker une telle valeur, sauf sur le serveur sur lequel vous regroupez tous les résultats. Vous pouvez pour cela écrire : Code :
Code :
Si vous avez besoin du nom de la base de données, utiliser DB_NAME(). @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||||
|
00
|
Copyright © 2000-2012 - www.developpez.com