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!