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
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 |
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? |