postgresql - 在 postgresql 中触发外部表的执行
问题描述
我有两个数据库 db1 和 db2.db2 有外部表,比如 tableA,其模式已从 db1 导入。每次更新行都会在 db1 中的 tableA 上运行一个触发器。现在使用 postgres_fdw 我可以从 db2 获取记录,但由于该触发器功能而无法更新 tableA 上的任何记录。如果我禁用触发器,更新工作正常。我需要该触发器用于审计日志。
请给我一个合适的建议来解决这个问题。我使用的是 postgres 9.6。
解决方案
确保建立链接的用户有权访问审计表。
您还可以将所需的架构添加到触发函数搜索路径:
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;
推荐阅读
- python - Django重复主键
- javascript - 使用 Javascript 将 href 更改为 django 迭代对象
- python - 尝试在多标签分类问题中应用自定义损失时出现 TypeError
- r - ARIMA 模型:手动与内置差分
- php - 我应该使用 strip_tags() 还是 htmlspecialchars() 在此处回显用户提交的链接?
- r - 替换 R 中的逻辑运算符
- python - Python Selenium 检查 Word 但不在源代码中
- javascript - 选择解构数组中的元素时防止错误
- laravel - 如何在 laravel 中不显示 api 错误?
- mysql - MySQL IF NOT EXISTS ... THEN 语句