-- Триггер: запрет на запись числового результата, если есть качественный по тому же обследованию CREATE OR REPLACE FUNCTION check_numeric_result_uniqueness () RETURNS TRIGGER AS $$ DECLARE qualitative_exists boolean; BEGIN SELECT EXISTS ( SELECT 1 FROM qualitative_result WHERE result_id = NEW.result_id) INTO qualitative_exists; IF qualitative_exists THEN RAISE EXCEPTION USING ERRCODE = 'P0001', MESSAGE = '10005: QUALITATIVE_RESULT_ALREADY_EXISTS_FOR_THIS_EXAMINATION'; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER trg_check_numeric_result_uniqueness BEFORE INSERT OR UPDATE ON numeric_result FOR EACH ROW EXECUTE FUNCTION check_numeric_result_uniqueness ();