Maison >base de données >tutoriel mysql >Comment vérifier les contraintes peut-il vérifier les contraintes de plage sur plusieurs tables de base de données ?
Vérification des contraintes de plage dans les tables à l'aide de contraintes de vérification
Considérons deux tables, ProjectTimeSpan et SubProjectTimeSpan, contenant toutes deux des colonnes StartDate et EndDate. Un scénario se présente dans lequel une contrainte de vérification est souhaitée pour garantir que les dates de début et de fin de SubProjectTimeSpan se situent toujours dans les plages de dates correspondantes de ProjectTimeSpan.
Contraintes de vérification conventionnelles
Régulier les contraintes de vérification comparent généralement les valeurs dans la même table. Cependant, dans ce cas, la condition nécessite de référencer les valeurs d'une autre table.
Extension des contraintes de vérification avec des fonctions
Une solution consiste à utiliser une contrainte de vérification en conjonction avec un fonction qui peut récupérer les données pertinentes de ProjectTimeSpan. En définissant une fonction telle que CheckFunction() et en la référençant dans la contrainte, la base de données peut vérifier dynamiquement les plages de dates par rapport aux valeurs stockées dans ProjectTimeSpan.
Par exemple, l'extrait de code suivant montre comment implémenter une telle vérification contrainte :
ALTER TABLE SubProjectTimeSpan ADD CONSTRAINT chk_CheckFunction CHECK (dbo.CheckFunction() = 1)
La fonction CheckFunction peut être définie comme suit :
CREATE FUNCTION dbo.CheckFunction() RETURNS INT AS BEGIN RETURN (SELECT 1) END
La fonction peut récupérez les données nécessaires de ProjectTimeSpan et effectuez les comparaisons requises. Cette approche permet une validation dynamique des plages de dates sur plusieurs tables, répondant ainsi à l'énoncé initial du problème.
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!