Я пытаюсь создать функцию и триггер, которые проверяют, что количество столбцов wid
и rdate
внутри таблицы responsibility
меньше или равно 10. Мне нужно создать исключение когда его больше 10.Проверка количества подзапросов не больше, чем x
Мой подсчет подсчета не работает. Когда COUNT()
больше 10, исключение не выбрасывается.
Что я делаю неправильно?
CREATE FUNCTION check_10() RETURNS TRIGGER AS $$
BEGIN
IF (SELECT COUNT(CASE WHEN wid = NEW.wid AND rdate = NEW.rdate THEN 1 ELSE 0 END) AS total FROM resposibility) > 10 THEN
RAISE EXCEPTION 'MAXIMUM OF 10 CAGE RESPONSIBILITES FOR EACH WORKER PER DATE';
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
/* I've added update to make sure even when "updating" that row it will run the trigger check to verify */
CREATE TRIGGER insert_resp BEFORE INSERT OR UPDATE ON resposibility
FOR EACH ROW EXECUTE PROCEDURE check_10();
@ConsiderMe: Совершенно без цели. Функция триггера Postgres не работает. –
Я предполагаю, что опечатка в вашем примере кода ('resposibility' without" n ") не имеет к этому никакого отношения? Триггер * будет казаться неэффективным, если вы действительно создали его за неправильную таблицу! –