如何从内部在远程 postgres 服务器中执行相同的查询 "BEFORE TRIGGER"

How to execute same query in remote postgres server from inside "BEFORE TRIGGER"

我计划在插入、更新和删除触发器之前在本地服务器上执行查询时,在远程数据库服务器上执行完全相同的查询。

我的用例是这样的:

  1. 使用 db_link 连接到远程服务器
  2. 想要在本地服务器中继续之前对远程服务器执行相同的查询。

您可能会告诉我在新查询中使用 OLD 和 NEW 对象来格式化数据,但我在 UPDATE 和 DELETE 查询中遇到了一种情况,因为我们使用的是 WHERE 子句,这不一致,因为我们使用的是哪个列将要执行的操作未知,例如

DELETE FROM my_table WHERE col1 = 'possibility1' OR col2 = 'possibility2'

还有另一种可能性

DELETE FROM my_table WHERE col1 = 'possibility1' AND col3 = 'possibility2'

现在的问题是如何在触发器中访问这个完整的查询 运行 在远程服务器上也是如此

想出了这个问题的解决方案。我在触发器内部使用 current_query() 来获取导致触发器调用的确切查询字符串。

例如

RAISE NOTICE 'my exact query statement: %', current_query();