pepe013
Messages postés42Date d'inscriptionjeudi 21 novembre 2002StatutMembreDernière intervention 2 juin 2006
-
1 déc. 2005 à 16:11
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 2011
-
2 déc. 2005 à 12:12
Bonjour,
Je suis actuellement sur un projet avec sql serveur et j'aimerais savoir si il existe une requete qui pourrait me donnée toutes les clé primaires d'une table.
Je sais qu'il faut joué avec SysObject et SysColumn mais je n'arrive pas a retourner que les clé primaire.
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 2 déc. 2005 à 12:12
salut
oui effectivement,
dans la ta ble sysobject, tu vas trouver :
le nom de tes tables (le champs xtype = 'U')
le nom de tes contraintes de clef primaire(le champs xtype = 'PK' et le champs parents_objet contient l'ID de la table a laquelle il la clef primaire se rapporte)
dans ta table syscolumns, tu vas trouver :
le nom de tes colonnes (champs name)
la table a laquelle elle appartiennent (le champs ID correspondant à l'ID de la table dans sysobjects)
enfin le champs xtype sera a 56 si la colone constitue une clef primaire,
(pour un champs "normal", il xtype = 167)
j'espere avoir été assez clair ?!?
juste un exemple pour t'aider : cette requete te renvoie le nom des champs constituant la clef primaire de la table 'MaTable'
SELECT a.name
FROM syscolumns a, sysobjects b
WHERE a.id = b.id
and b.name = 'MaTable'
and a.xtype = 56
ensuite tu peux créer une table avec des clef primaires, etrangere... pour voir les differentes valeur de xtype...