Création d'une fonction personnalisée avec contrainte de vérification dans SQL Server 2008
Lorsque vous travaillez avec des bases de données SQL Server, le maintien de l'intégrité des données est crucial. Les contraintes de vérification fournissent un mécanisme précieux pour garantir que les données insérées dans une table respectent les règles spécifiées. Dans ce contexte, le besoin se fait sentir de créer une fonction personnalisée qui valide la relation entre deux tables à l'aide d'une contrainte de vérification.
Plus précisément, dans ce cas, le but est d'établir une contrainte de vérification sur la colonne event_expected_attendance dans le table des événements, en veillant à ce qu'il ne dépasse pas l'entier venue_max_capacity dans la table des lieux. Pour y parvenir, une fonction personnalisée doit être définie et référencée dans la contrainte de vérification.
Création de la fonction personnalisée
La fonction personnalisée, nommée CheckVenueCapacity, vérifie si la fonction fournie la valeur de capacité est inférieure ou égale à venue_max_capacity pour le venue_id donné. Voici le code de la fonction :
CREATE FUNCTION dbo.CheckVenueCapacity (@venue_id int, @capacity int) RETURNS int AS BEGIN DECLARE @retval int SELECT @retval = CASE WHEN venue_max_capacity >= @capacity THEN 0 ELSE 1 END FROM venues WHERE venue_id = @venue_id RETURN @retval END;
Cette fonction renvoie 0 si la capacité est valide et 1 si elle dépasse la capacité maximale du lieu.
Ajout de la contrainte de vérification
Une fois la fonction personnalisée définie, nous pouvons ajouter la contrainte check aux événements table :
ALTER TABLE events ADD CONSTRAINT chkVenueCapacity CHECK (dbo.CheckVenueCapacity(event_venue_id, event_expected_attendance) = 0);
Cette contrainte garantit que toute insertion de données dans la colonne event_expected_attendance est validée par la fonction CheckVenueCapacity, empêchant ainsi les valeurs qui violeraient la capacité maximale du lieu.
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!