Ограничьте таблицу, чтобы в ней не было более 2 строк с одинаковым идентификатором внешнего ключа

#sql-server #check-constraints

Вопрос:

у меня есть таблица teams с team_id primary key и таблица pilots с внешним ключом team_id . Я хочу применить ограничение, которое не позволит мне добавить более 2 пилотов с одинаковыми team_id

Ответ №1:

Вы можете создать функцию для подсчета количества пилотов для определенного идентификатора team_id, а затем свериться с функцией в ограничении.

Что-то вроде:

 CREATE FUNCTION dbo.FnHowManyPilots(@team_id INT)  
RETURNS int  
AS   
BEGIN  
   DECLARE @pilot_count int
   SELECT @pilot_count = COUNT(*)
   FROM pilots
   WHERE team_id = @team_id
   RETURN @pilot_count
END;  
 

Затем добавьте ограничение:

 ALTER TABLE pilots  
ADD CONSTRAINT chkPilotCount CHECK (dbo.FnHowManyPilots(team_id) <= 2 );  
GO