-- Триггер: запрет на запись качественного результата, если есть числовой по тому же обследованию
CREATE OR REPLACE FUNCTION check_qualitative_result_uniqueness ()
    RETURNS TRIGGER
    AS $$
DECLARE
    numeric_exists boolean;
BEGIN
    SELECT
        EXISTS (
            SELECT
                1
            FROM
                numeric_result
            WHERE
                result_id = NEW.result_id) INTO numeric_exists;
    IF numeric_exists THEN
        RAISE EXCEPTION
            USING ERRCODE = 'P0001', MESSAGE = '10006: NUMERIC_RESULT_ALREADY_EXISTS_FOR_THIS_EXAMINATION';
        END IF;
        RETURN NEW;
END;
$$
LANGUAGE plpgsql;

CREATE TRIGGER trg_check_qualitative_result_uniqueness
    BEFORE INSERT OR UPDATE ON qualitative_result
    FOR EACH ROW
    EXECUTE FUNCTION check_qualitative_result_uniqueness ();

