我想在我的数据库中使用postgres_fdw
和容纳 a 。FOREIGN TABLE
是否可以在本地服务器上为此定义一个触发器FOREIGN TABLE
来识别INSERT
远程服务器上的事件。如果有,请举个例子。
数据流:
- 将数据插入远程服务器上的表中。
- 识别触发触发器的本地服务器外部表上的插入。
- 触发器函数将数据写入其他表。
- 写入成功后,回帖到外部表
没有报告错误,但写入 table_b 似乎不成功。
这是我尝试过的:
CREATE FOREIGN TABLE x.table_a -- note the foreign table is in a different schema than the local table
( id BIGINT NOT NULL
, data_ts TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
, xchg_ts TIMESTAMPTZ DEFAULT NULL
)
SERVER remote_server
OPTIONS (schema_name 'schema_a', table_name 'table_a')
;
CREATE TABLE y.table_b
( xchg_id BIGINT
, error_msg TEXT DEFAULT NULL
);
CREATE OR REPLACE FUNCTION func_foreign_table_a_after_insert()
RETURNS TRIGGER
AS $$
BEGIN
INSERT INTO y.table_b
(xchg_id)
VALUES
(NEW.id)
;
RETURN NEW;
END;
$$ LANGUAGE PLPGSQL
;
CREATE TRIGGER trig_foreign_table_a_after_insert
AFTER INSERT ON x.table_a
FOR EACH ROW EXECUTE PROCEDURE func_foreign_table_a_after_insert();