Postgres fdw вставка записи с внешними триггерами - PullRequest
0 голосов
/ 07 апреля 2020

Я установил стороннюю оболочку данных для второй базы данных Postgres и импортировал стороннюю схему. Теперь, когда я пытаюсь вставить строку в одну из внешних таблиц из моей первичной базы данных, она попадает в функцию, вызываемую для триггера вставки. Этот триггер проверяет другую таблицу, которая существует во внешней таблице, но он говорит, что «отношения» the_other_table "не существует. Я могу выбрать его из первичной базы данных, но во время выполнения триггера он не может его увидеть.

Я попытался, используя две схемы с одинаковыми именами, затем заново импортировал схему под другим именем, но все равно ничего. Как будто он выполняет триггер на моем основном компьютере, но не знает, где искать другую таблицу.

Есть идеи?

1 Ответ

0 голосов
/ 10 апреля 2020

В общем, я не вижу этой проблемы, поэтому это должно быть что-то конкретное в вашей настройке.

cat fdw_trigger. sql:

create database fgn;
\c fgn
create table a (x int);
create table b (x int);
create or replace function foobar() returns trigger language plpgsql as $$ BEGIN insert into public.b values(NEW.x); return new; END $$;
create trigger lsadkjf before insert on a for each row execute function foobar() ;
\c postgres
create schema fgn;
create extension postgres_fdw ;
create server fgn foreign data wrapper postgres_fdw OPTIONS ( dbname 'fgn');
create user MAPPING FOR CURRENT_USER SERVER fgn;
import foreign schema public from server fgn into fgn;
insert into fgn.a  values (13);
\c fgn
select * from b ;
select * from a ;

psql postgres -f fdw_trigger. sql

работает как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...