Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Fonction personnalisée avec contrainte de vérification SQL Server 2008

Comme indiqué par Martin Smith, l'utilisation d'une contrainte de vérification avec une UDF pose certains problèmes et peut avoir un impact négatif sur les performances, mais si vous voulez quand même l'essayer, ce code devrait fonctionner :

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);