Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lecture des clés primaires de toutes les tables

4 réponses
Avatar
MM
Bonjour,

Je souhaite récupérer les nom et type des champs qui constituent les clés
primaires des tables d'une base de données.
J'ai trouvé dans l'aide la procédure sp_pkeys mais elle prends en paramètres
le nom de la table...or je voudrais exécuter celà pour toutes les tables.
J'ai donc songer à faire un curseur (c'est mal je sais ;-)) qui bouclerai
sur les tables et qui appelerai à chaque itération la procédure sp_pkeys...

Deux inconvénients ressortent cependant de cette méthode :
- L'utilisation d'un curseur.
- Et surtout le renvoi de resultsets multiples.

Quelqu'un connait t-il une solution ?
J'ai cherché à exploiter les tables sysindexes et sysconstraints, ainsi que
la table sysobjects via un filtre sur xtype='PK' mais pour l'instant sans
succès...

Merci par avance,

4 réponses

Avatar
Med Bouchenafa[MVP]
SELECT K.Table_Name, K.Column_Name
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS C
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE K
ON C.CONSTRAINT_NAME = K.CONSTRAINT_NAME
WHERE C.CONSTRAINT_TYPE ='PRIMARY KEY'

--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris
"MM" wrote in message
news:#
Bonjour,

Je souhaite récupérer les nom et type des champs qui constituent les clés
primaires des tables d'une base de données.
J'ai trouvé dans l'aide la procédure sp_pkeys mais elle prends en


paramètres
le nom de la table...or je voudrais exécuter celà pour toutes les tables.
J'ai donc songer à faire un curseur (c'est mal je sais ;-)) qui bouclerai
sur les tables et qui appelerai à chaque itération la procédure


sp_pkeys...

Deux inconvénients ressortent cependant de cette méthode :
- L'utilisation d'un curseur.
- Et surtout le renvoi de resultsets multiples.

Quelqu'un connait t-il une solution ?
J'ai cherché à exploiter les tables sysindexes et sysconstraints, ainsi


que
la table sysobjects via un filtre sur xtype='PK' mais pour l'instant sans
succès...

Merci par avance,




Avatar
MM
Merci beaucoup pour votre réponse très rapide et pertinente ;-)

Avez un conseil à me faire vis à vis de la méthode d'accès aux informations
concernant le schéma ?
Vaut-il mieux utiliser INFORMATION_SCHEMA ou les tables systèmes ?
Et si possible pouvez-vous justifier en deux mots votre préconisation ?

Cordialement,
MM.


"Med Bouchenafa[MVP]" wrote in message
news:#
SELECT K.Table_Name, K.Column_Name
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS C
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE K
ON C.CONSTRAINT_NAME = K.CONSTRAINT_NAME
WHERE C.CONSTRAINT_TYPE ='PRIMARY KEY'

--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris
"MM" wrote in message
news:#
> Bonjour,
>
> Je souhaite récupérer les nom et type des champs qui constituent les


clés
> primaires des tables d'une base de données.
> J'ai trouvé dans l'aide la procédure sp_pkeys mais elle prends en
paramètres
> le nom de la table...or je voudrais exécuter celà pour toutes les


tables.
> J'ai donc songer à faire un curseur (c'est mal je sais ;-)) qui


bouclerai
> sur les tables et qui appelerai à chaque itération la procédure
sp_pkeys...
>
> Deux inconvénients ressortent cependant de cette méthode :
> - L'utilisation d'un curseur.
> - Et surtout le renvoi de resultsets multiples.
>
> Quelqu'un connait t-il une solution ?
> J'ai cherché à exploiter les tables sysindexes et sysconstraints, ainsi
que
> la table sysobjects via un filtre sur xtype='PK' mais pour l'instant


sans
> succès...
>
> Merci par avance,
>
>




Avatar
MM
Ok je me reponds a moi même après avoir trouver l'info...

En résumé :
Il vaut mieux utiliser les vues car elles abstraient les tables systèmes et
resteront stables contrairement aux tables systèmes qui sont susceptibles
d'évoluer.

En détail :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_ia-iz_4pbn.asp

"MM" wrote in message
news:#
Merci beaucoup pour votre réponse très rapide et pertinente ;-)

Avez un conseil à me faire vis à vis de la méthode d'accès aux


informations
concernant le schéma ?
Vaut-il mieux utiliser INFORMATION_SCHEMA ou les tables systèmes ?
Et si possible pouvez-vous justifier en deux mots votre préconisation ?

Cordialement,
MM.


"Med Bouchenafa[MVP]" wrote in message
news:#
> SELECT K.Table_Name, K.Column_Name
> FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS C
> INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE K
> ON C.CONSTRAINT_NAME = K.CONSTRAINT_NAME
> WHERE C.CONSTRAINT_TYPE ='PRIMARY KEY'
>
> --
> Bien cordialement
> Med Bouchenafa
> TETRASET
> 75015 Paris
> "MM" wrote in message
> news:#
> > Bonjour,
> >
> > Je souhaite récupérer les nom et type des champs qui constituent les
clés
> > primaires des tables d'une base de données.
> > J'ai trouvé dans l'aide la procédure sp_pkeys mais elle prends en
> paramètres
> > le nom de la table...or je voudrais exécuter celà pour toutes les
tables.
> > J'ai donc songer à faire un curseur (c'est mal je sais ;-)) qui
bouclerai
> > sur les tables et qui appelerai à chaque itération la procédure
> sp_pkeys...
> >
> > Deux inconvénients ressortent cependant de cette méthode :
> > - L'utilisation d'un curseur.
> > - Et surtout le renvoi de resultsets multiples.
> >
> > Quelqu'un connait t-il une solution ?
> > J'ai cherché à exploiter les tables sysindexes et sysconstraints,


ainsi
> que
> > la table sysobjects via un filtre sur xtype='PK' mais pour l'instant
sans
> > succès...
> >
> > Merci par avance,
> >
> >
>
>




Avatar
Fred BROUARD
A lire :
http://sqlpro.developpez.com/SQL_AZ_7b.html#SCHEMA9

A +



--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
MM a écrit:
Ok je me reponds a moi même après avoir trouver l'info...

En résumé :
Il vaut mieux utiliser les vues car elles abstraient les tables systèmes et
resteront stables contrairement aux tables systèmes qui sont susceptibles
d'évoluer.

En détail :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_ia-iz_4pbn.asp

"MM" wrote in message
news:#

Merci beaucoup pour votre réponse très rapide et pertinente ;-)

Avez un conseil à me faire vis à vis de la méthode d'accès aux



informations

concernant le schéma ?
Vaut-il mieux utiliser INFORMATION_SCHEMA ou les tables systèmes ?
Et si possible pouvez-vous justifier en deux mots votre préconisation ?

Cordialement,
MM.


"Med Bouchenafa[MVP]" wrote in message
news:#

SELECT K.Table_Name, K.Column_Name
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS C
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE K
ON C.CONSTRAINT_NAME = K.CONSTRAINT_NAME
WHERE C.CONSTRAINT_TYPE ='PRIMARY KEY'

--
Bien cordialement
Med Bouchenafa
TETRASET
75015 Paris
"MM" wrote in message
news:#

Bonjour,

Je souhaite récupérer les nom et type des champs qui constituent les





clés

primaires des tables d'une base de données.
J'ai trouvé dans l'aide la procédure sp_pkeys mais elle prends en



paramètres

le nom de la table...or je voudrais exécuter celà pour toutes les





tables.

J'ai donc songer à faire un curseur (c'est mal je sais ;-)) qui





bouclerai

sur les tables et qui appelerai à chaque itération la procédure



sp_pkeys...

Deux inconvénients ressortent cependant de cette méthode :
- L'utilisation d'un curseur.
- Et surtout le renvoi de resultsets multiples.

Quelqu'un connait t-il une solution ?
J'ai cherché à exploiter les tables sysindexes et sysconstraints,







ainsi

que

la table sysobjects via un filtre sur xtype='PK' mais pour l'instant





sans

succès...

Merci par avance,