Re: Query on postgres_fdw extension

From: Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at>
To: Duarte Carreira <dncarreira(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Swathi P <swathi(dot)bluepearl(at)gmail(dot)com>, Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com>, pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: Query on postgres_fdw extension
Date: 2022-01-21 13:59:29
Message-ID: 780b4208700bb54138e5e17961282b26832a51a8.camel@cybertec.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-general

On Thu, 2022-01-20 at 15:59 +0000, Duarte Carreira wrote:
> I got here after encountering the same difficulty, although on a much more mundane scenario.
>
> I'm used to fdw on a read-only basis. I was just inserting a new record on a foreign table
> and got blocked... and after much searching got here.
>
> As far as I can see it is impossible to use fdw to insert records on 99% of tables,
> since all have some kind of primary sequential key.

Yes, this is tricky. You could use something like this:

CREATE TABLE local (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
data text
);

CREATE FOREIGN TABLE remote (id bigint NOT NULL, data text)
SERVER whatever OPTIONS (table_name 'local');

CREATE FOREIGN TABLE remote_noid (data text)
SERVER whatever OPTIONS (table_name 'local');

CREATE VIEW v_remote AS SELECT * FROM remote;

CREATE FUNCTION ins_trig() RETURNS trigger LANGUAGE plpgsql AS
$$BEGIN
INSERT INTO remote_noid (data) VALUES (NEW.data);
RETURN NEW;
END;$$;

CREATE TRIGGER ins_trig INSTEAD OF INSERT ON v_remote
FOR EACH ROW EXECUTE FUNCTION ins_trig();

INSERT INTO v_remote (data) VALUES ('something');

SELECT * FROM v_remote;

id │ data
════╪═══════════
1 │ something

Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Duarte Carreira 2022-01-21 14:33:50 Re: Query on postgres_fdw extension
Previous Message Duarte Carreira 2022-01-21 12:02:05 Re: Query on postgres_fdw extension

Browse pgsql-general by date

  From Date Subject
Next Message Laurenz Albe 2022-01-21 14:02:20 Re: [EXT] Re: Can we get the CTID value
Previous Message Shaozhong SHI 2022-01-21 12:52:10 Can commands be typed in to view geometry in PgAdmin?