【问题标题】:Trigger execution for foreign table in postgresql在 postgresql 中触发外部表的执行
【发布时间】:2019-04-29 05:26:41
【问题描述】:

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

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

【问题讨论】:

  • 错误信息是什么?
  • 找不到要插入审计细节的日志表。它显示关系[table_name]不存在,尽管该表在db1中可用。 @JGH

标签: postgresql database-trigger foreign-data-wrapper postgres-fdw


【解决方案1】:

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

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

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;

【讨论】:

  • 让我试试这个,我会回复你的。
猜你喜欢
  • 2020-05-18
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-05
  • 2012-02-14
  • 1970-01-01
相关资源
最近更新 更多