Maison >base de données >tutoriel mysql >Comment puis-je créer une fonction personnalisée avec une contrainte de vérification dans SQL Server 2008 pour valider les données sur plusieurs tables ?
Fonction personnalisée avec contrainte de vérification dans SQL Server 2008
Dans SQL Server 2008, vous pouvez créer une fonction personnalisée pour appliquer une contrainte de vérification. Ceci est utile lorsque vous devez vérifier des données sur plusieurs tables ou effectuer des validations complexes.
Énoncé du problème :
Vous disposez de deux tables, lieux et événements existants, et vous souhaitez vous assurer que la valeur de la colonne event_expected_attendance de la table des événements est toujours inférieure ou égale à la colonne venue_max_capacity des lieux table.
Syntaxe de la fonction personnalisée :
Une fonction personnalisée prend la syntaxe suivante :
CREATE FUNCTION [schema_name].[function_name] ( [parameter_list] ) RETURNS [return_type] AS BEGIN -- Function body RETURN [return_value]; END;
Instruction de jointure pour la contrainte de vérification :
Pour créer une contrainte de vérification qui compare les données de deux tables, vous pouvez utiliser une instruction de jointure dans le CHECK clause. La clause JOIN permet de préciser la relation entre les deux tables et les colonnes à comparer.
Solution :
Le code suivant crée une fonction personnalisée nommée CheckVenueCapacity et une contrainte de vérification qui utilise la fonction pour appliquer la règle de capacité :
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; GO ALTER TABLE events ADD CONSTRAINT chkVenueCapacity CHECK (dbo.CheckVenueCapacity(event_venue_id, event_expected_attendance) = 0);
Cette solution utilise une expression de cas dans la fonction pour renvoyer 0 si la capacité est suffisante et 1 sinon. La contrainte check vérifie ensuite la valeur de retour de la fonction et empêche la sauvegarde de tout événement si la capacité est dépassée.
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!