Можно ли вызвать функцию в исключении противопоставлений, чтобы вернуть только определенный столбец - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь реализовать ограничение исключения, и я написал функцию, которая возвращает более одного отдельного параметра (типы: изменение символов). Я хочу вызвать эту функцию дважды, но выбрать разные столбцы, что-то вроде этого:

... EXCLUDE USING GIST (

(make_rule_test(contract_id, customer_id, email_address,vin)).email_address_OUT WITH =,

(make_rule_test(contract_id, customer_id, email_address,vin)).vin_OUT WITH =

)

Но я получил ошибку

: ----- ERROR: syntax error at or near "."

Функция должна следовать такой логике:IF (contract_id + customer_id) имеет значение NULL И адрес электронной почты не равен NULL И VIN не равен NULL Тогда VIN и электронная почта должны быть уникальными на одном уровне. Функция должна вернуть вин и емейл. Это моя функция:

create OR REPLACE function make_rule_test(IN contract_id integer,IN customer_id character varying(30), IN email_address character varying(255), IN vin character varying(17),
                                         OUT email_address_OUT character varying(255), OUT vin_OUT character varying(17))
as
$$
begin

    if(contract_id is null and customer_id is null and email_address is not null and vin is not null)   
    then   
        email_address_OUT := email_address;
        vin_OUT := vin;
    END IF;
end;        
$$
LANGUAGE 'plpgsql' IMMUTABLE;

Мой вопрос: можно ли вызвать эту функцию для возврата только определенного столбца? Я видел, что GIST не поддерживает тип записи?

...