Sql serveur et Tables Systemes

pepe013 Messages postés 42 Date d'inscription jeudi 21 novembre 2002 Statut Membre Dernière intervention 2 juin 2006 - 1 déc. 2005 à 16:11
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 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.

Merci d'avance !!!!

pépé

1 réponse

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
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...
0
Rejoignez-nous