У меня есть триггер, который проверяет, имеет ли статус строки, на которую ссылается новая запись, «В ПРОЦЕССЕ» или «ПРИНЯТ», однако он работает не так, как ожидалось, и всегда вызывает исключение, даже когда я проверяю, чтозапись имеет статус «IN PROGRESS» или «ACCEPTED».
Вот таблицы:
Problem | Ticket
------------+-------------
problem_id | ticket_id
status | problem_id
CREATE OR REPLACE FUNCTION status_check()
RETURNS TRIGGER AS
$BODY$
BEGIN
IF (SELECT status FROM customer_problem WHERE problem_id = NEW.problem_id)
!= 'IN PROGRESS' OR
(SELECT status FROM customer_problem WHERE problem_id = NEW.problem_id)
!= 'ACCEPTED'
THEN RAISE EXCEPTION 'Problem status not IN PROGRESS or ACCEPTED';
END IF;
RETURN NEW;
END
$BODY$ LANGUAGE plpgsql;
CREATE TRIGGER check_status_bef
BEFORE INSERT ON ticket
FOR EACH ROW
EXECUTE PROCEDURE status_check();
Я также пытался использовать IF, IF-ELSE в случае, если что-то изменилосьэто не так.