Problème :
Vous voulez trouver les noms des contraintes dans une table dans SQL Server.
Exemple :
On veut afficher les noms des contraintes dans le tableau student .
Solution :
SELECT TABLE_NAME,
CONSTRAINT_TYPE,CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME=’student’;
Voici le résultat :
| TABLE_NAME | CONSTRAINT_TYPE | CONSTRAINT_NAME |
|---|---|---|
| étudiant | CLÉ PRIMAIRE | PK__étudiant__3213E83F357C7D1D |
| étudiant | UNIQUE | UQ__étudiant__24E2EDD2AC2A7D87 |
| étudiant | VÉRIFIER | CK__student__age__4E88ABD4 |
| étudiant | CLÉ ÉTRANGÈRE | FK__student__country__4F7CD00D |
Discussion :
Utilisez la vue table_constraints dans le information_schema schéma. La colonne table_name vous donne le nom de la table dans laquelle la contrainte est définie, et la colonne constraint_name contient le nom de la contrainte. La colonne constraint_type indique le type de contrainte :PRIMARY KEY pour le type de clé primaire, FOREIGN KEY pour le type de clé étrangère, UNIQUE pour les valeurs uniques, et CHECK pour la vérification des contraintes.
Par exemple, la clé primaire dans le student la table porte le nom de contrainte PK_student_3213E83F357C7D1D . Le constraint_type colonne vous donne des informations sur le type de chaque contrainte ; pour la clé primaire, c'est PRIMARY KEY . Le table_name colonne de cette vue indique quelle table contient cette contrainte.
Cependant, si vous souhaitez sélectionner le DEFAULT contrainte d'une base de données, utilisez cette requête ci-dessous.
SELECT c.name, c.definition FROM sys.default_constraints c JOIN sys.objects o ON o.object_id = c.parent_object_id WHERE o.name ='student';
Voici le résultat :
| nom | définition |
|---|---|
| DF__student__name__4D94879B | ("inconnu") |
Le nom du DEFAULT la contrainte est stockée dans le nom de la colonne, mais la valeur est dans la colonne definition . Joindre les vues sys.default_constraint s et sys.objects permet de ne sélectionner que les données d'une table donnée (dans notre exemple, la table student ) en utilisant la clause WHERE. Le nom de la contrainte contient le nom de la table (student ) et le nom de la colonne (name ).