sp_fkeys (Transact-SQL)
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.
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 (contenant la clé primaire) utilisée pour retourner les informations de catalogue. L'argument pktable_name est de type 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. Il faut spécifier ce paramètre, le paramètre fktable_name, ou les deux à la fois.[ @pktable_owner = ] 'pktable_owner'
Nom du propriétaire de la table (contenant la clé primaire) utilisée pour retourner les informations de catalogue. L'argument pktable_owner est de type 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 l'argument pktable_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 possède une table ayant le nom spécifié, ce sont les colonnes de cette table qui sont retournées. Si la valeur de pktable_owner n'est pas spécifiée et que l'utilisateur actuel ne possède pas de table dont la valeur pktable_name est spécifiée, la procédure recherche une table, avec la valeur pktable_name spécifiée, qui est possédée par le propriétaire de la base de données. S'il en existe une, ce sont les colonnes de cette table qui sont retournées.
[ @pktable_qualifier = ] 'pktable_qualifier'
Nom du qualificateur de la table (contenant la clé primaire). pktable_qualifier est de type sysname, avec une valeur NULL par défaut. Divers produits SGDB prennent en charge les noms de table en trois parties (qualifier.owner.name). Dans SQL Server, le qualificateur représente le nom de la base de données. Dans certains produits, il 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 de type sysname, avec une valeur NULL par défaut. La recherche de correspondance avec des caractères génériques n'est pas prise en charge. Il faut spécifier ce paramètre, le paramètre pktable_name, ou les deux à la fois.[ @fktable_owner = ] 'fktable_owner'
Nom du propriétaire de la table (contenant une clé étrangère) utilisée pour retourner les informations de catalogue. L'argument fktable_owner est de type 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 l'argument fktable_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 possède une table ayant le nom spécifié, ce sont les colonnes de cette table qui sont retournées. Si la valeur de fktable_owner n'est pas spécifiée et que l'utilisateur actuel ne possède pas de table dont la valeur fktable_name est spécifiée, la procédure recherche une table, avec la valeur fktable_name spécifiée, qui est possédée par le propriétaire de la base de données. S'il en existe une, ce sont les colonnes de cette table qui sont retournées.
[ @fktable_qualifier =] 'fktable_qualifier'
Nom du qualificateur de la table (contenant une clé étrangère). L'argument fktable_qualifierest de type sysname, avec NULL comme valeur par défaut. Dans SQL Server, le qualificateur représente le nom de la base de données. Dans certains produits, il représente le nom du serveur de l'environnement de base de données de la table.
Valeurs du code de retour
Aucune
Jeux de résultats
Nom de la 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 de clé primaire, 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 de clé étrangère, pour chaque colonne de la table TABLE_NAME retournée. Ce champ retourne toujours une valeur. |
KEY_SEQ |
smallint |
Numéro d'ordre 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.SQL Server retourne 0 ou 1 pour ces colonnes : 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=SET_NULL ; affectation de NULL à la clé étrangère. |
DELETE_RULE |
smallint |
Action appliquée à la clé étrangère lorsque l'opération SQL est une suppression.SQL Server retourne 0 ou 1 pour ces colonnes : 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=SET_NULL ; affectation de NULL à la clé étrangère. |
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 obtenus sont triés par FKTABLE_QUALIFIER, FKTABLE_OWNER, FKTABLE_NAME et KEY_SEQ.
Notes
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. Pour plus d'informations sur l'option NOT FOR REPLICATION, consultez Contrôle des contraintes, des identités et des déclencheurs avec l'option NOT FOR REPLICATION.
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 est équivalente à SQLForeignKeys dans ODBC.
Autorisations
Exige l'autorisation SELECT sur le schéma.
Exemple
L'exemple suivant extrait une liste de clés étrangères pour la table HumanResources.Department dans la base de données AdventureWorks.
USE AdventureWorks;
GO
EXEC sp_fkeys @pktable_name = N'Department'
,@pktable_owner = N'HumanResources'