REFERENTIAL_CONSTRAINTS (Transact-SQL)

Renvoie une ligne pour chaque contrainte FOREIGN KEY dans la base de données active. Cette vue des schémas d'information renvoie des informations sur les objets autorisés pour l'utilisateur actuel.

Pour récupérer les informations de ces vues, spécifiez le nom complet de INFORMATION_SCHEMA.view_name.

Nom de la colonne

Type de données

Description

CONSTRAINT_CATALOG

nvarchar(128)

Qualificateur de la contrainte

CONSTRAINT_SCHEMA

nvarchar(128)

Nom du schéma qui contient la contrainte.

ImportantImportant
N'utilisez pas les vues INFORMATION_SCHEMA pour déterminer le schéma d'un objet. La seule méthode fiable pour rechercher le schéma d'un objet est d'interroger l'affichage catalogue sys.objects ou d'utiliser la fonction OBJECT_SCHEMA_NAME.

CONSTRAINT_NAME

sysname

Nom de la contrainte.

UNIQUE_CONSTRAINT_CATALOG

nvarchar(128)

Identificateur de la contrainte unique.

UNIQUE_CONSTRAINT_SCHEMA

nvarchar(128)

Nom du schéma qui contient la contrainte UNIQUE.

ImportantImportant
N'utilisez pas les vues INFORMATION_SCHEMA pour déterminer le schéma d'un objet. La seule méthode fiable pour rechercher le schéma d'un objet est d'interroger l'affichage catalogue sys.objects ou d'utiliser la fonction OBJECT_SCHEMA_NAME.

UNIQUE_CONSTRAINT_NAME

sysname

Contrainte UNIQUE.

MATCH_OPTION

varchar(7)

Conditions référentielles de correspondance de contraintes. Renvoie toujours la valeur SIMPLE. Signifie qu'aucune correspondance n'est définie. La condition est considérée comme correspondante si l'une des conditions suivantes est réalisée :

  • au moins une valeur de la colonne de clé étrangère est NULL ;

  • toutes les valeurs de la colonne de clé étrangère ne comportent pas la valeur NULL, et une ligne de la table de clé primaire contient la même clé.

UPDATE_RULE

varchar(11)

Action entreprise lorsqu'une instruction Transact-SQL viole l'intégrité référentielle définie par cette contrainte.

Renvoie l'une des valeurs suivantes :

  • NO ACTION

  • CASCADE

  • SET NULL

  • SET DEFAULT

Si NO ACTION est spécifié sur une instruction ON UPDATE de cette contrainte, la mise à jour de la clé primaire référencée dans la contrainte n'est pas propagée vers la clé étrangère. Si une telle mise à jour enfreint l'intégrité référentielle car au moins une clé étrangère contient la même valeur, SQL Server n'apporte aucune modification aux tables parentes et de référence. Par ailleurs, SQL Server génère une erreur.

Si CASCADE est spécifié sur une instruction ON UPDATE de cette contrainte, toute modification de valeur de la clé primaire est automatiquement propagée vers la valeur de la clé étrangère.

DELETE_RULE

varchar(11)

Action entreprise lorsqu'une instruction Transact-SQL viole l'intégrité référentielle définie par cette contrainte.

Renvoie l'une des valeurs suivantes :

  • NO ACTION

  • CASCADE

  • SET NULL

  • SET DEFAULT

Si NO ACTION est spécifié sur une instruction ON DELETE de cette contrainte, la suppression de la clé primaire référencée dans la contrainte n'est pas propagée vers la clé étrangère. Si la suppression d'une clé primaire enfreint l'intégrité référentielle car au moins une clé étrangère contient la même valeur, SQL Server n'apporte aucune modification aux tables parentes et de référence. Par ailleurs, SQL Server génère une erreur.

Si CASCADE est spécifié sur une instruction ON DELETE de cette contrainte, toute modification de valeur de la clé primaire est automatiquement propagée vers la valeur de la clé étrangère.

Exemples

Dans l'exemple suivant, vous obtenez les informations relatives à chaque clé étrangère dans le schéma Sales de la base de données.

USE AdventureWorks;
GO

SELECT CONSTRAINT_SCHEMA, CONSTRAINT_NAME, UNIQUE_CONSTRAINT_SCHEMA, UNIQUE_CONSTRAINT_NAME, 
    MATCH_OPTION, UPDATE_RULE, DELETE_RULE
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
WHERE CONSTRAINT_SCHEMA = 'Sales';