Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment trouver le nom d'une contrainte dans SQL Server

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 ).