1

我正在尝试实现排除约束,并且我编写了返回多个单独参数(类型:字符变化)的函数。我想要的是调用这个函数两次,但选择不同的列,如下所示:

... 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) is null AND email_address is not null AND vin is not null THEN vin 和 email 在同一级别必须是唯一的。函数应该返回 vin 和 email。这是我的功能:

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 不支持记录类型?

4

0 回答 0