我正在尝试实现排除约束,并且我编写了返回多个单独参数(类型:字符变化)的函数。我想要的是调用这个函数两次,但选择不同的列,如下所示:
... 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 不支持记录类型?