featurelles, check/trigger dblink/fdw, типа того ...
--create extension postgres_fdw;
--create server postgres_server foreign data wrapper postgres_fdw options (host '8.8.8.8', port '5494', dbname 'postgres');
--create user mapping for public server postgres_server options (password '');
--drop table if exists aa;
create table aa as select i as id, (random()*100)::numeric(10,2) as v from generate_series(1,2) as i;
alter table aa add constraint pk_aa primary key (id);
--drop foreign table if exists f_aa;
create foreign table f_aa (id int, v numeric(10,2)) server postgres_server options (table_name 'aa');
--drop function check_exists_aa(aa_id int) cascade;
create or replace function check_exists_aa(aa_id int) returns boolean language sql as
$$
select coalesce((select count(*) from f_aa where id = aa_id), 0)=1;
$$;
--drop table if exists bb;
create table bb (id int, a_id int, v numeric(12,2), constraint pk_bb primary key (id), constraint fk_chk_aa check(check_exists_aa(a_id)) );
insert into bb values (1,1, 0); --ok
insert into bb values (2,3, 0); --error
insert into f_aa values (3,100);
insert into bb values (2,3, 0); --ok