Il existe souvent de nombreuses façons de faire la même chose (ou similaire) dans SQL Server. Récupérer toutes les clés primaires d'une base de données (ou même seulement la clé primaire d'une table donnée) en est un exemple.
Cet article présente onze approches différentes pour récupérer les informations de clé primaire dans SQL Server.
Certains d'entre eux seront plus utiles que d'autres, selon votre situation exacte.
Exemple 1 – La procédure stockée système sp_pkeys
Si vous voulez juste la clé primaire pour une table donnée, le sp_pkeys
La procédure stockée du système est probablement le moyen le plus rapide et le plus simple de le faire. Pour cela, il suffit de passer le nom de la table à la procédure.
Comme ceci :
EXEC sp_pkeys Artistes ;
Résultat (en utilisant la sortie verticale) :
TABLE_QUALIFIER | MusiqueTABLE_OWNER | dboTABLE_NAME | ArtistesCOLUMN_NAME | IdartisteKEY_SEQ | 1PK_NAME | PK__Artistes__25706B50FCD918B1
Dans ce cas, j'ai demandé la clé primaire aux artistes table. Il renvoie le nom de la clé primaire ( PK__Artists__25706B50FCD918B1 ), le nom de la base de données ( Musique ), le nom de la table, le nom de la colonne ( ArtistId ), ainsi que d'autres informations.
Alternativement, j'aurais pu spécifier explicitement tous les arguments pour obtenir le même résultat :
EXEC sp_pkeys @table_name =Artistes, @table_owner =dbo, @table_qualifier =Musique ;
Exemple 2 – La vue système KEY_COLUMN_USAGE
Le INFORMATION_SCHEMA.KEY_COLUMN_USAGE
La vue système renvoie une ligne pour chaque colonne contrainte en tant que clé dans la base de données actuelle. Par conséquent, vous obtiendrez également des clés étrangères renvoyées avec cette vue.
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE ;
Résultat :
+-------------+---------------+--------------- ----------------+| TABLE_NAME | COLUMN_NAME | CONTRAINTE_NAME ||--------------+---------------+---------------- ---------------|| Albums | Identifiant de l'artiste | FK_Albums_Artistes || Albums | ID de genre | FK_Albums_Genres || Albums | ID d'album | PK__Albums__97B4BE379FC780BD || Artistes | Identifiant de l'artiste | PK__Artistes__25706B50FCD918B1 || Genres | ID de genre | PK__Genres__0385057E88BB96F8 |+--------------+---------------+---------------- ---------------+
Nous pouvons voir que cela renvoie des contraintes de toutes les tables. Nous pourrions également ajouter un WHERE
clause pour limiter les résultats à une table spécifique.
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE TABLE_NAME ='Artistes' ;
Résultat :
+-------------+---------------+--------------- ----------------+| TABLE_NAME | COLUMN_NAME | CONTRAINTE_NAME ||--------------+---------------+---------------- ---------------|| Artistes | Identifiant de l'artiste | PK__Artists__25706B50FCD918B1 |+--------------+---------------+---------------- ---------------+
Dans ces exemples, j'ai limité les résultats aux seules colonnes de la vue qui m'intéressent, mais vous pouvez également utiliser l'astérisque (*
) caractère générique pour renvoyer toutes les colonnes.
SELECT *FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE TABLE_NAME ='Artistes' ;
Résultat (en utilisant la sortie verticale) :
CONSTRAINT_CATALOG | MusiqueCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | PK__Artists__25706B50FCD918B1TABLE_CATALOG | MusiqueTABLE_SCHEMA | dboTABLE_NAME | ArtistesCOLUMN_NAME | IdartisteORDINAL_POSITION | 1
Exemple 3 - La vue système CONSTRAINT_COLUMN_USAGE
Ceci est similaire à l'exemple précédent. Le INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
La vue système renvoie une ligne pour chaque colonne de la base de données actuelle pour laquelle une contrainte est définie sur la colonne. Comme avec INFORMATION_SCHEMA.KEY_COLUMN_USAGE
vous obtiendrez également les clés étrangères renvoyées avec cette vue. Cependant, INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
ne se limite pas aux contraintes clés.
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE ;
Résultat :
+-------------+---------------+--------------- ----------------+| TABLE_NAME | COLUMN_NAME | CONTRAINTE_NAME ||--------------+---------------+---------------- ---------------|| Albums | Identifiant de l'artiste | FK_Albums_Artistes || Albums | ID de genre | FK_Albums_Genres || Albums | ID d'album | PK__Albums__97B4BE379FC780BD || Artistes | Identifiant de l'artiste | PK__Artistes__25706B50FCD918B1 || Genres | ID de genre | PK__Genres__0385057E88BB96F8 |+--------------+---------------+---------------- ---------------+
Vous pouvez utiliser un WHERE
clause pour renvoyer uniquement une table ou une colonne spécifique :
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGEWHERE COLUMN_NAME ='ArtistId' ;
Résultat :
+-------------+---------------+--------------- ----------------+| TABLE_NAME | COLUMN_NAME | CONTRAINTE_NAME ||--------------+---------------+---------------- ---------------|| Albums | Identifiant de l'artiste | FK_Albums_Artistes || Artistes | Identifiant de l'artiste | PK__Artists__25706B50FCD918B1 |+--------------+---------------+---------------- ---------------+
Dans ce cas, j'ai spécifié un nom de colonne, il a donc renvoyé toutes les contraintes sur les colonnes portant ce nom. Il s'avère que la base de données utilise le même nom de colonne dans deux tables différentes. L'un a une contrainte de clé étrangère, l'autre une clé primaire. Par conséquent, les deux lignes sont renvoyées.
Encore une fois, vous pouvez utiliser l'astérisque (*
) caractère générique pour renvoyer toutes les colonnes.
SELECT *FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGEWHERE TABLE_NAME ='Artistes' ;
Résultat (en utilisant la sortie verticale) :
TABLE_CATALOG | MusiqueTABLE_SCHEMA | dboTABLE_NAME | ArtistesCOLUMN_NAME | IdArtistCONSTRAINT_CATALOG | MusiqueCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | PK__Artistes__25706B50FCD918B1
Dans cet exemple, j'ai limité la sortie aux contraintes d'une table spécifique.
Exemple 4 - La vue système CONSTRAINT_TABLE_USAGE
Le INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE
la vue système renvoie une ligne pour chaque table de la base de données actuelle pour laquelle une contrainte est définie sur la table.
SELECT TABLE_NAME, CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE ;
Résultat :
+--------------+--------------------------------------------- +| TABLE_NAME | CONTRAINTE_NAME ||--------------+---------------------------------------------| | Artistes | PK__Artistes__25706B50FCD918B1 || Genres | PK__Genres__0385057E88BB96F8 || Albums | PK__Albums__97B4BE379FC780BD || Albums | FK_Albums_Artistes || Albums | FK_Albums_Genres |+-------------+-------------------------------+
Cette vue ne renvoie pas le ou les noms de colonne sur lesquels les contraintes sont utilisées, elle peut donc ne pas vous être aussi utile, selon vos besoins.
Voici un exemple qui montre toutes les données renvoyées par cette vue pour les Genres tableau :
SELECT * FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGEWHERE TABLE_NAME ='Genres' ;
Résultat :
TABLE_CATALOG | MusiqueTABLE_SCHEMA | dboTABLE_NAME | GenresCONSTRAINT_CATALOG | MusiqueCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | PK__Genres__0385057E88BB96F8
Exemple 5 - La vue système TABLE_CONSTRAINTS
Le INFORMATION_SCHEMA.TABLE_CONSTRAINTS
la vue système renvoie une ligne pour chaque contrainte de table dans la base de données actuelle.
SELECT TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPEFROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS ;
Résultat :
+--------------+--------------------------------------------- +-------------------+| TABLE_NAME | CONSTRAINT_NAME | CONTRAINTE_TYPE ||--------------+---------------------------------------------+ -------------------|| Artistes | PK__Artistes__25706B50FCD918B1 | CLÉ PRIMAIRE || Genres | PK__Genres__0385057E88BB96F8 | CLÉ PRIMAIRE || Albums | PK__Albums__97B4BE379FC780BD | CLÉ PRIMAIRE || Albums | FK_Albums_Artistes | CLÉ ÉTRANGÈRE || Albums | FK_Albums_Genres | CLÉ ÉTRANGÈRE |+-------------+------------------------------- +-------------------+
Cette vue ne fournit pas le nom de la colonne, mais elle fournit le type de contrainte. Par conséquent, vous pouvez limiter les résultats aux clés primaires :
SELECT TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPEFROM INFORMATION_SCHEMA.TABLE_CONSTRAINTSWHERE CONSTRAINT_TYPE ='PRIMARY KEY';
Résultat :
+--------------+--------------------------------------------- +-------------------+| TABLE_NAME | CONSTRAINT_NAME | CONTRAINTE_TYPE ||--------------+---------------------------------------------+ -------------------|| Artistes | PK__Artistes__25706B50FCD918B1 | CLÉ PRIMAIRE || Genres | PK__Genres__0385057E88BB96F8 | CLÉ PRIMAIRE || Albums | PK__Albums__97B4BE379FC780BD | CLE PRIMAIRE |+-------------+--------------------------------------------- +-------------------+
Voici un exemple qui utilise un caractère générique (*
) caractère pour renvoyer toutes les données pour les contraintes sur les
Artistes
tableau :
SELECT *FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTSWHERE TABLE_NAME ='Artistes' ;
Résultat :
CONSTRAINT_CATALOG | MusiqueCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | PK__Artists__25706B50FCD918B1TABLE_CATALOG | MusiqueTABLE_SCHEMA | dboTABLE_NAME | ArtistesCONSTRAINT_TYPE | CLÉ PRIMAIREIS_DEFERRABLE | NOINITIALLY_DEFERRED | NON
Exemple 6 - La vue système key_constraints
Les sys.key_constraints
La vue système contient une ligne pour chaque objet qui est une clé primaire ou une contrainte unique. Par conséquent, nous pourrions utiliser le code suivant pour renvoyer toutes les contraintes de clé primaire dans la base de données, ainsi que la table pertinente pour chaque clé primaire :
SELECT OBJECT_NAME(parent_object_id) AS 'Table', nameFROM sys.key_constraints WHERE type ='PK';
Résultat :
+---------+-------------------------------+| Tableau | nom ||---------+---------------------------------------------|| Artistes | PK__Artistes__25706B50FCD918B1 || Genres | PK__Genres__0385057E88BB96F8 || Albums | PK__Albums__97B4BE379FC780BD |+---------+-------------------------------+
Bien sûr, vous pouvez supprimer le WHERE
clause pour retourner les deux clés primaires et clés uniques.
L'exemple précédent utilise le OBJECT_NAME()
fonction pour renvoyer le nom de la table parent, plutôt que son object_id. Si je n'ai pas utilisé le OBJECT_NAME()
fonction, le résultat aurait ressemblé à ceci :
SELECT parent_object_id, nameFROM sys.key_constraintsWHERE type ='PK' ;
Résultat :
+--------------------+------------------------- ------+| parent_object_id | nom ||--------------------+------------------------------------ -----|| 885578193 | PK__Artistes__25706B50FCD918B1 || 917578307 | PK__Genres__0385057E88BB96F8 || 949578421 | PK__Albums__97B4BE379FC780BD |+--------------------+-------------------------- -----+
Le
parent_object_id
est renvoyé à la place du nom de l'objet parent. Le OBJECT_NAME()
La fonction nous permet de comprendre plus facilement à quelle table chaque clé est appliquée.
Voici un exemple où j'utilise le caractère générique (*
) pour renvoyer toutes les colonnes de la clé primaire sur les
Albums
tableau :
SELECT *FROM sys.key_constraintsWHERE type ='PK'AND OBJECT_NAME(parent_object_id) ='Albums' ;
Résultat :
nom | PK__Albums__97B4BE379FC780BDobject_id | 965578478principal_id | NULLschema_id | 1parent_object_id | 949578421type | PKtype_desc | PRIMARY_KEY_CONSTRAINTcreate_date | 2019-05-02 12:56:06.377modify_date | 2019-05-02 12:56:06.377is_ms_shipped | 0est_publié | 0is_schema_published | 0unique_index_id | 1is_system_named | 1is_enforced | 1
Exemple 7 - La vue système sys.objects
Les sys.objects
La vue système contient une ligne pour chaque objet défini par l'utilisateur et étendu au schéma qui est créé dans une base de données. Il contient donc nos tables et nos clés primaires.
Nous pouvons reprendre la requête précédente et remplacer key_constraints
avec des objects
et nous obtiendrons le même résultat :
SELECT OBJECT_NAME(parent_object_id) AS 'Table', nameFROM sys.objects WHERE type ='PK';
Résultat :
+---------+-------------------------------+| Tableau | nom ||---------+---------------------------------------------|| Artistes | PK__Artistes__25706B50FCD918B1 || Genres | PK__Genres__0385057E88BB96F8 || Albums | PK__Albums__97B4BE379FC780BD |+---------+-------------------------------+
Voici un exemple qui renvoie toutes les données pour le PK__Genres__0385057E88BB96F8 clé primaire :
SELECT *FROM sys.objectsWHERE name ='PK__Genres__0385057E88BB96F8';
Résultat (en utilisant la sortie verticale) :
nom | PK__Genres__0385057E88BB96F8object_id | 933578364principal_id | NULLschema_id | 1parent_object_id | 917578307type | PKtype_desc | PRIMARY_KEY_CONSTRAINTcreate_date | 2019-05-02 12:56:06.110modify_date | 2019-05-02 12:56:06.110is_ms_shipped | 0est_publié | 0is_schema_published | 0
Exemple 8 – La vue système REFERENTIAL_CONSTRAINTS
Celui-ci est un peu exagéré, mais il pourrait être utile selon votre situation. Et techniquement, il renvoie (certaines) clés primaires.
Le INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
la vue système renvoie une ligne pour chaque FOREIGN KEY
contrainte dans la base de données courante. Son but est donc en fait de renvoyer des clés étrangères - et non des clés primaires. Cependant, cette vue peut être pratique si vous souhaitez uniquement voir toutes les clés primaires associées à une clé étrangère. Ce n'est pas une méthode fiable à utiliser si vous voulez voir toutes les clés primaires, qu'il y ait ou non une clé étrangère associée.
Voici un exemple :
SELECT CONSTRAINT_NAME, UNIQUE_CONSTRAINT_NAMEFROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS ;
Résultat :
+-------------------+-------------------------- -----+| CONSTRAINT_NAME | UNIQUE_CONSTRAINT_NAME ||-------------------+--------------------------- ----|| FK_Albums_Artistes | PK__Artistes__25706B50FCD918B1 || FK_Albums_Genres | PK__Genres__0385057E88BB96F8 |+-------------------+--------------------------- ----+
Comme vous pouvez le voir, cela ne renvoie que les clés primaires qui ont une clé étrangère associée. Pour être plus précis, c'est en fait l'inverse - il renvoie toutes les clés étrangères, ainsi que leur UNIQUE
associé contrainte.
Ainsi, si nous comparons ces résultats avec les résultats des exemples précédents, nous pouvons voir que seules deux clés primaires sont renvoyées (contre trois dans les exemples précédents). En effet, l'une des clés primaires de cette base de données ( PK__Albums__97B4BE379FC780BD ) n'a pas de clé étrangère associée.
Voici un exemple qui renvoie toutes les données pour les clés étrangères dont
PK__Artists__25706B50FCD918B1
est le UNIQUE
contrainte :
SELECT *FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTSWHERE UNIQUE_CONSTRAINT_NAME ='PK__Artists__25706B50FCD918B1' ;
Résultat :
CONSTRAINT_CATALOG | MusiqueCONSTRAINT_SCHEMA | dboCONSTRAINT_NAME | FK_Albums_ArtistsUNIQUE_CONSTRAINT_CATALOG | MusiqueUNIQUE_CONSTRAINT_SCHEMA | dboUNIQUE_CONSTRAINT_NAME | PK__Artistes__25706B50FCD918B1MATCH_OPTION | SIMPLEUPDATE_RULE | PAS D'ACTIONSUPPRIMER_RULE | AUCUNE ACTION
Dans ce cas, une seule clé étrangère est renvoyée.
Comme mentionné, cette vue sert principalement à renvoyer des informations sur la clé étrangère. N'utilisez donc cette méthode que si vous souhaitez afficher les informations sur la clé étrangère avec la clé primaire associée. N'utilisez pas cette méthode si vous souhaitez voir toutes les clés primaires, qu'elles aient ou non une clé étrangère associée.
Exemple 9 – La procédure stockée système sp_fkeys
Cette méthode est similaire à la méthode précédente, en ce sens qu'elle renvoie des informations sur la clé étrangère. Il renvoie également la clé primaire associée à chaque clé étrangère.
Exemple :
EXEC sp_fkeys Artistes ;
Résultat (en utilisant la sortie verticale) :
PKTABLE_QUALIFIER | MusiquePKTABLE_OWNER | dboPKTABLE_NAME | ArtistesPKCOLUMN_NAME | IdArtisteFKTABLE_QUALIFIER | MusiqueFKTABLE_OWNER | dboFKTABLE_NAME | AlbumsFKCOLUMN_NAME | IdartisteKEY_SEQ | 1UPDATE_RULE | 1DELETE_RULE | 1FK_NAME | FK_Albums_ArtistsPK_NAME | PK__Artists__25706B50FCD918B1DIFFÉRABILITÉ | 7
J'aurais pu utiliser la syntaxe suivante à la place (ou une combinaison de ces arguments) :
EXEC sp_fkeys @pktable_name =Artistes, @pktable_owner =dbo, @pktable_qualifier =Musique, @fktable_name =Albums, @fktable_owner =dbo, @fktable_qualifier =Musique ;
Comme dans l'exemple précédent, cette méthode ne doit pas être utilisée pour renvoyer toutes les clés primaires. Si une clé primaire n'a pas de clé étrangère associée, elle ne sera pas renvoyée.
Exemple 10 – La procédure stockée système sp_helpconstraint
La sp_helpconstraint
procédure stockée système renvoie une liste de tous les types de contraintes, leur nom défini par l'utilisateur ou fourni par le système, les colonnes sur lesquelles ils ont été définis et l'expression qui définit la contrainte (pour DEFAULT
et CHECK
contraintes uniquement).
Vous pouvez donc l'utiliser pour renvoyer des informations sur les clés primaires de votre base de données.
Exemple :
EXEC sp_helpconstraintAlbums ;
Résultat :
+---------------+| Nom de l'objet ||---------------|| Albums |+---------------+ -[ ENREGISTREMENT 1 ]------------------------- type_contrainte | FOREIGN KEYconstraint_name | FK_Albums_Artistsdelete_action | Aucune actionupdate_action | Non Actionstatus_enabled | Enabledstatus_for_replication | Is_For_Replicationconstraint_keys | ArtistId-[ RECORD 2 ]-------------------------constraint_type | nom_contrainte | delete_action | action_mise_à_jour | status_enabled | status_for_replication | clés_contraintes | RÉFÉRENCES Music.dbo.Artists (ArtistId)-[ RECORD 3 ]-------------------------constraint_type | FOREIGN KEYconstraint_name | FK_Albums_Genresdelete_action | Aucune actionupdate_action | Non Actionstatus_enabled | Enabledstatus_for_replication | Is_For_Replicationconstraint_keys | GenreId-[ RECORD 4 ]-------------------------contrainte_type | nom_contrainte | delete_action | action_mise_à_jour | status_enabled | status_for_replication | clés_contraintes | RÉFÉRENCES Music.dbo.Genres (GenreId)-[ RECORD 5 ]-------------------------constraint_type | CLÉ PRIMAIRE (cluster) nom_contrainte | PK__Albums__97B4BE379FC780BDdelete_action | (n/a)update_action | (n/a)status_enabled | (n/a)status_for_replication | (n/a)constraint_keys | ID de l'album
Exemple 11 – La procédure stockée du système sp_help
Le sp_help
la procédure stockée du système rapporte des informations sur un objet de base de données (tout objet répertorié dans le sys.sysobjects
vue de compatibilité), un type de données défini par l'utilisateur ou un type de données. Cela inclut des informations sur les clés primaires.
Lorsque vous l'exécutez sans aucun argument, il fournit des informations sur les informations récapitulatives des objets de tous les types qui existent dans la base de données actuelle (c'est-à-dire un lot d'informations).
Cependant, vous pouvez fournir le nom d'une table, et il renverra des informations sur cette table. Encore une fois, vous obtiendrez beaucoup d'informations, mais parmi celles-ci se trouveront des informations de clé primaire.
Exemple :
EXEC sp_help Artistes ;
Résultat :
+---------+---------+------------+------------- ------------+| Nom | Propriétaire | Taper | Date_heure_de_création ||---------+---------+------------+------- -----------|| Artistes | dbo | tableau utilisateur | 2019-05-02 12:56:05.840 |+---------+---------+-----+----- --------------------+ -[ ENREGISTREMENT 1 ]------------------------ -nom_colonne | Type d'ID d'artiste | intComputed | pasLongueur | 4Prec | 10 Échelle | 0 Nullable | noTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a)Collation | NULL-[ ENREGISTREMENT 2 ]-------------------------Nom_colonne | TypeNomArtiste | nvarcharComputed | pasLongueur | 510Préc | Échelle | Nullable | noTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a)Collation | SQL_Latin1_General_CP1_CI_AS-[ RECORD 3 ]-------------------------Column_name | ActiveFromType | dateComputed | pasLongueur | 3Prec | 10 Échelle | 0 Nullable | yesTrimTrailingBlanks | (n/a)FixedLenNullInSource | (n/a)Collation | NULL +------------+--------+-------------+------------ -----------+| Identité | Graine | Incrément | Pas pour la réplication ||------------+--------+-------------+--------- --------------|| Identifiant de l'artiste | 1 | 1 | 0 |+------------+--------+-------------+----------- ------------+ +-------------------------------+| LigneGuidCol ||-------------------------------|| Aucune colonne rowguidcol définie. |+-------------------------------+ +--------------- --------------+| Data_located_on_filegroup ||--------------------------------------|| PRIMAIRE |+----------------------------+ +---------------- -------------------------------------------------------------------------------- -----------------+--------------+| nom_index | index_description | index_keys ||---------------------------------------------+--------------- ------------------------------------+---------------------- -|| PK__Artistes__25706B50FCD918B1 | clé primaire groupée, unique, située sur PRIMARY | IdArtiste |+---------------------------------------------+--------------- ------------------------------------+---------------------- -+ -[ ENREGISTREMENT 1 ]-------------------------type_contrainte | CLÉ PRIMAIRE (cluster) nom_contrainte | PK__Artists__25706B50FCD918B1delete_action | (n/a)update_action | (n/a)status_enabled | (n/a)status_for_replication | (n/a)constraint_keys | IdArtiste +-------------------------------------------+| La table est référencée par une clé étrangère ||--------------------------------------------------|| Music.dbo.Albums :FK_Albums_Artists |+------------------------------------------+Vous pouvez également fournir le nom d'une clé primaire pour obtenir des informations de base à son sujet :
EXEC sp_help PK__Artists__25706B50FCD918B1 ;Résultat :
+-------------------------------+---------+---- -------------+-------------------------+| Nom | Propriétaire | Taper | Date_heure_de_création ||-------------------------------+---------+----- ------------+-------------------------|| PK__Artistes__25706B50FCD918B1 | dbo | clé primaire cns | 2019-05-02 12:56:05.853 |+-------------------------------+------ ---+-----------------+-------------------------+