sp_fkeys (Transact-SQL)

S'applique à :SQL ServerBase de données Azure SQLAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)L'entrepôt dans Microsoft Fabric

Retourne des informations sur les clés étrangères logiques pour l'environnement actuel. Cette procédure montre les relations de clés étrangères comprenant des clés étrangères désactivées.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_fkeys [ @pktable_name = ] 'pktable_name'   
     [ , [ @pktable_owner = ] 'pktable_owner' ]   
     [ , [ @pktable_qualifier = ] 'pktable_qualifier' ]   
     { , [ @fktable_name = ] 'fktable_name' }   
     [ , [ @fktable_owner = ] 'fktable_owner' ]   
     [ , [ @fktable_qualifier = ] 'fktable_qualifier' ]  

Arguments

[ @pktable_name=] 'pktable_name'
Nom de la table, avec la clé primaire, utilisée pour retourner les informations de catalogue. pktable_name est sysname, avec la valeur null par défaut. La recherche de correspondance avec des caractères génériques n'est pas prise en charge. Ce paramètre ou le paramètre fktable_name , ou les deux, doit être fourni.

[ @pktable_owner=] 'pktable_owner'
Nom du propriétaire de la table (avec la clé primaire) utilisé pour retourner les informations du catalogue. pktable_owner est sysname, avec la valeur null par défaut. La recherche de correspondance avec des caractères génériques n'est pas prise en charge. Si pktable_owner n’est pas spécifié, les règles de visibilité de table par défaut du SGBD sous-jacent s’appliquent.

Dans SQL Server, si l’utilisateur actuel possède une table portant le nom spécifié, les colonnes de cette table sont retournées. Si pktable_owner n’est pas spécifié et que l’utilisateur actuel ne possède pas de table avec le pktable_name spécifié, la procédure recherche une table avec le pktable_name spécifié appartenant au propriétaire de la base de données. S'il en existe une, les colonnes de cette table sont retournées.

[ @pktable_qualifier =] 'pktable_qualifier'
Nom de la table (avec la clé primaire) qualificateur. pktable_qualifier est sysname, avec la valeur null par défaut. Différents produits SGBD prennent en charge le nommage en trois parties pour les tables (qualifier.owner.name). Dans SQL Server, le qualificateur représente le nom de la base de données. Dans d'autres produits, elle représente le nom du serveur de l'environnement de base de données de la table.

[ @fktable_name=] 'fktable_name'
Nom de la table (contenant une clé étrangère) utilisée pour retourner les informations de catalogue. fktable_name est sysname, avec la valeur null par défaut. La recherche de correspondance avec des caractères génériques n'est pas prise en charge. Ce paramètre ou le paramètre pktable_name , ou les deux, doivent être fournis.

[ @fktable_owner =] 'fktable_owner'
Nom du propriétaire de la table (contenant une clé étrangère) utilisée pour retourner les informations de catalogue. fktable_owner est sysname, avec la valeur null par défaut. La recherche de correspondance avec des caractères génériques n'est pas prise en charge. Si fktable_owner n’est pas spécifié, les règles de visibilité de table par défaut du SGBD sous-jacent s’appliquent.

Dans SQL Server, si l’utilisateur actuel possède une table portant le nom spécifié, les colonnes de cette table sont retournées. Si fktable_owner n’est pas spécifié et que l’utilisateur actuel ne possède pas de table avec le fktable_name spécifié, la procédure recherche une table avec le fktable_name spécifié appartenant au propriétaire de la base de données. S'il en existe une, les colonnes de cette table sont retournées.

[ @fktable_qualifier= ] 'fktable_qualifier'
Nom de la table (avec une clé étrangère) qualificateur. fktable_qualifier est sysname, avec la valeur null par défaut. Dans SQL Server, le qualificateur représente le nom de la base de données. Dans d'autres produits, elle représente le nom du serveur de l'environnement de base de données de la table.

Codet de retour

None

Jeux de résultats

Nom de colonne Type de données Description
PKTABLE_QUALIFIER sysname Nom du qualificateur de la table (où figure la clé primaire). Ce champ peut contenir la valeur NULL.
PKTABLE_OWNER sysname Nom du propriétaire de la table (où figure la clé primaire). Ce champ retourne toujours une valeur.
PKTABLE_NAME sysname Nom de la table (contenant la clé primaire). Ce champ retourne toujours une valeur.
PKCOLUMN_NAME sysname Nom des colonnes clés primaires, pour chaque colonne de la table TABLE_NAME retournée. Ce champ retourne toujours une valeur.
FKTABLE_QUALIFIER sysname Nom du qualificateur de la table (contenant une clé étrangère). Ce champ peut contenir la valeur NULL.
FKTABLE_OWNER sysname Nom du propriétaire de la table (contenant une clé étrangère). Ce champ retourne toujours une valeur.
FKTABLE_NAME sysname Nom de la table (contenant une clé étrangère). Ce champ retourne toujours une valeur.
FKCOLUMN_NAME sysname Nom de la colonne clé étrangère, pour chaque colonne de la table TABLE_NAME retournée. Ce champ retourne toujours une valeur.
KEY_SEQ smallint Numéro de séquence de la colonne dans une clé primaire multicolonne. Ce champ retourne toujours une valeur.
UPDATE_RULE smallint Action appliquée à la clé étrangère lorsque l'opération SQL est une mise à jour. Valeurs possibles :
0=Modifications de type CASCADE apportées à la clé étrangère.
1=Modifications de type NO ACTION en présence de clé étrangère.
2 = définir null
3 = définir la valeur par défaut
DELETE_RULE smallint Action appliquée à la clé étrangère lorsque l'opération SQL est une suppression. Valeurs possibles :
0=Modifications de type CASCADE apportées à la clé étrangère.
1=Modifications de type NO ACTION en présence de clé étrangère.
2 = définir null
3 = définir la valeur par défaut
FK_NAME sysname Identificateur de clé étrangère. NULL si non applicable à la source de données. SQL Server retourne le nom de la contrainte FOREIGN KEY.
PK_NAME sysname Identificateur de clé primaire. NULL si non applicable à la source de données. SQL Server retourne le nom de la contrainte PRIMARY KEY.

Les résultats retournés sont classés par FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME et KEY_SEQ.

Remarques

Si le code de votre application fait référence à des tables avec des clés étrangères désactivées, vous pouvez l'implémenter en utilisant l'une des méthodes suivantes :

  • Désactiver temporairement la vérification des contraintes (ALTER TABLE NOCHECK ou CREATE TABLE NOT FOR REPLICATION) pendant que vous travaillez sur les tables, et la réactiver par la suite.

  • Utiliser les déclencheurs ou le code de l'application pour assurer l'intégrité des relations.

Si le nom de la table de clé primaire est spécifié et que le nom de la table de clé étrangère est NULL, la procédure sp_fkeys retourne toutes les tables qui contiennent une clé étrangère faisant référence à la table donnée. Si le nom de la table de clé étrangère est spécifié et que le nom de la table de clé primaire est NULL, la procédure sp_fkeys retourne toutes les tables liées par une relation clé primaire/clé étrangère aux clés étrangères qui se trouvent dans la table de clé étrangère.

La procédure stockée sp_fkeys équivaut à SQLForeignKeys dans ODBC.

Autorisations

Nécessite SELECT une autorisation sur le schéma.

Examples

L'exemple suivant extrait une liste de clés étrangères pour la table HumanResources.Department dans la base de données AdventureWorks2022.

USE AdventureWorks2022;  
GO  
EXEC sp_fkeys @pktable_name = N'Department'  
    ,@pktable_owner = N'HumanResources';  

Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)

L'exemple suivant extrait une liste de clés étrangères pour la table DimDate dans la base de données AdventureWorksPDW2012. Aucune ligne n’est retournée, car Azure Synapse Analytics ne prend pas en charge les clés étrangères.

EXEC sp_fkeys @pktable_name = N'DimDate';  

Voir aussi

Procédures stockées de catalogue (Transact-SQL)
Procédures stockées système (Transact-SQL)
sp_pkeys (Transact-SQL)