首页 > 解决方案 > 在 postgresql 中触发外部表的执行

问题描述

我有两个数据库 db1 和 db2.db2 有外部表,比如 tableA,其模式已从 db1 导入。每次更新行都会在 db1 中的 tableA 上运行一个触发器。现在使用 postgres_fdw 我可以从 db2 获取记录,但由于该触发器功能而无法更新 tableA 上的任何记录。如果我禁用触发器,更新工作正常。我需要该触发器用于审计日志。

请给我一个合适的建议来解决这个问题。我使用的是 postgres 9.6。

标签: postgresqldatabase-triggerforeign-data-wrapperpostgres-fdw

解决方案


确保建立链接的用户有权访问审计表。

您还可以将所需的架构添加到触发函数搜索路径:

CREATE OR REPLACE FUNCTION abc.mytrigger() RETURNS trigger AS
$BODY$BEGIN
 [...] -- do something in the xyz schema
  RETURN NEW;
END;$BODY$ 
LANGUAGE plpgsql 
SET search_path = xyz;

推荐阅读