sp_pkeys (Transact-SQL)

Renvoie des informations de clé primaire pour une table de l'environnement actif.

Icône Lien de rubriqueConventions de syntaxe de Transact-SQL

Syntaxe

sp_pkeys [ @table_name = ] 'name'     
      [ , [ @table_owner = ] 'owner' ] 
   [ , [ @table_qualifier = ] 'qualifier' ]

Arguments

  • [ @table_name = ] 'name'
    Table pour laquelle les informations sont renvoyées. name est de type sysname, sans valeur par défaut. La recherche de correspondance avec des caractères génériques n'est pas prise en charge.

  • [ @table_owner = ] 'owner'
    Spécifie le propriétaire de la table désignée. owner est de type sysname, avec NULL comme valeur par défaut. La recherche de correspondance avec des caractères génériques n'est pas prise en charge. Si l'argument owner n'est pas spécifié, les règles définissant par défaut la visibilité des tables du SGBD sous-jacent s'appliquent.

    Dans SQL Server, si l'utilisateur actuel est propriétaire d'une table portant le nom spécifié, les colonnes de cette table sont renvoyées. Si la valeur de owner n'est pas spécifiée et que l'utilisateur actuel ne possède pas de table dont la valeur name est spécifiée, la procédure recherche une table, avec la valeur name spécifiée, qui soit possédée par le propriétaire de la base de données. Si la recherche de la table aboutit, ce sont les colonnes de cette dernière qui sont renvoyées.

  • [ @table_qualifier = ] 'qualifier'
    Qualificateur de la table. qualifier est de type sysname, avec NULL comme valeur par défaut. Différents produits SGDB prennent en charge la dénomination des tables en trois parties (qualifier**.owner.**name). Dans SQL Server, cette colonne représente le nom de la base de données. Dans certains produits, elle représente le nom du serveur de l'environnement de base de données de la table.

Valeurs des codes renvoyés

Aucun

Ensembles de résultats

Nom de la colonne

Type de données

Description

TABLE_QUALIFIER

sysname

Nom du qualificateur de la table. Ce champ peut contenir la valeur NULL.

TABLE_OWNER

sysname

Nom du propriétaire de la table. Ce champ renvoie toujours une valeur.

TABLE_NAME

sysname

Nom de la table. Dans SQL Server, cette colonne représente le nom de la table tel qu'il figure dans la table sysobjects. Ce champ renvoie toujours une valeur.

COLUMN_NAME

sysname

Nom de la colonne, pour chaque colonne renvoyée de la table TABLE_NAME. Dans SQL Server, cette colonne représente le nom de la colonne tel qu'il figure dans la table sys.columns. Ce champ renvoie toujours une valeur.

KEY_SEQ

smallint

Numéro d'ordre de la colonne dans une clé primaire multicolonne.

PK_NAME

sysname

Identificateur de clé primaire. Renvoie NULL s'il n'est pas applicable à la source de données.

Notes

sp_pkeys renvoie des informations sur les colonnes explicitement définies avec une contrainte PRIMARY KEY. Comme tous les systèmes ne prennent en charge pas les clés primaires explicitement nommées, la personne chargée de la mise en œuvre des passerelles détermine ce qui constitue une clé primaire. Notez que le terme « clé primaire » fait référence à une clé primaire logique pour une table. À chaque clé indiquée comme étant une clé primaire logique doit correspondre un seul index défini sur cette clé. Cet index unique est également renvoyé dans sp_statistics.

La procédure stockée sp_pkeys est équivalente à SQLPrimaryKeys dans ODBC. Les résultats renvoyés sont triés par TABLE_QUALIFIER, TABLE_OWNER, TABLE_NAME et KEY_SEQ.

Autorisations

Nécessite l'autorisation SELECT sur le schéma.

Exemple

L'exemple suivant extrait la clé primaire de la table HumanResources.Department dans la base de données AdventureWorks2008R2.

USE AdventureWorks2008R2;
GO
EXEC sp_pkeys @table_name = N'Department'
    ,@table_owner = N'HumanResources';