Maison >base de données >tutoriel mysql >Les contraintes de vérification peuvent-elles référencer d'autres tables dans les bases de données SQL ?

Les contraintes de vérification peuvent-elles référencer d'autres tables dans les bases de données SQL ?

DDD
DDDoriginal
2025-01-05 03:20:43801parcourir

Can Check Constraints Reference Other Tables in SQL Databases?

Les contraintes de vérification peuvent-elles faire référence à d'autres tables ?

De nombreuses bases de données prennent en charge les contraintes de vérification comme moyen de garantir l'intégrité des données. Ces contraintes vous permettent de spécifier les conditions qui doivent être remplies pour que les données soient insérées ou mises à jour dans une table.

Considérons un scénario avec deux tables : ProjectTimeSpan et SubProjectTimeSpan. Chaque tableau comprend les colonnes StartDate et EndDate. Vous souhaitez créer une contrainte de vérification dans SubProjectTimeSpan qui garantit que les valeurs StartDate et EndDate se situent dans les ProjectTimeSpan.StartDate et ProjectTimeSpan.EndDate range.

Une telle contrainte de vérification est-elle possible ?

Oui, il est possible de créer une telle contrainte à l'aide d'une fonction. Voici un exemple utilisant la syntaxe SQL Server :

alter table SubProjectTimeSpan
add constraint chk_CheckFunction
check (dbo.CheckFunction() = 1)

Dans cet exemple, dbo.CheckFunction() est une fonction définie par l'utilisateur qui renvoie 1 si le StartDate et les valeurs EndDate dans SubProjectTimeSpan se situent dans la plage ProjectTimeSpan.StartDate et ProjectTimeSpan.EndDate. Voici un exemple d'implémentation de la fonction :

create function dbo.CheckFunction()
returns int
as
begin
    return (select 1 where exists(select 1 from ProjectTimeSpan where StartDate <= SubProjectTimeSpan.StartDate and EndDate >= SubProjectTimeSpan.EndDate))
end

Cette fonction fait référence à la table ProjectTimeSpan pour vérifier la contrainte. En utilisant une fonction, vous pouvez créer des contraintes de vérification qui font référence à des valeurs dans d'autres tables, offrant ainsi une flexibilité dans l'application de l'intégrité des données sur plusieurs tables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn