#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