从PostgreSQL触发器调用外部程序

从PostgreSQL触发器调用外部程序,postgresql,notifications,listener,Postgresql,Notifications,Listener,我希望在触发PostgreSQL触发器时执行外部程序(如.net c#console)。我该如何实现它?出于安全原因,Postgres无法正常运行外部程序 典型的解决方案是使用一个守护进程,并为其设置守护进程。每个主要的脚本语言都有解决方案 来自@Craig的Java示例: 自Postgres 9.3以来,有一种调用外部程序的解决方案。出于安全原因,它仅限于用于导出数据的超级用户和IMHO,而不是执行“触发时通知”: 如果要将数据实际导出到调用的程序,可以提供任意SELECT或表名,而不是S

我希望在触发PostgreSQL触发器时执行外部程序(如.net c#console)。我该如何实现它?

出于安全原因,Postgres无法正常运行外部程序

典型的解决方案是使用一个守护进程,并为其设置守护进程。每个主要的脚本语言都有解决方案

  • 来自@Craig的Java示例:


自Postgres 9.3以来,有一种调用外部程序的解决方案。出于安全原因,它仅限于用于导出数据的超级用户和IMHO,而不是执行“触发时通知”:

如果要将数据实际导出到调用的程序,可以提供任意SELECT或表名,而不是SELECT 1。然后,查询结果将通过其标准输入传递给被调用的程序

您可以在Postgres文档中找到该功能的文档:

为什么我的问题被否决了?有什么原因吗?当然,我一直在寻找解决办法。我仍然找不到更好更快的解决方案。任何替代方案都可以。PHP示例是否阻塞?我想一直听的是什么?不仅仅是针对一个事件,而且对于每一个事件,显然有一个事件没有被听过,所以所有人需要做的是在处理事件之后重新运行C++查询。你能解释一下为什么你的论点中有两条路径,分别是
/bin/touch
/tmp/created\u postgres
?您认为这可以执行外部python或shell脚本吗?好的,我知道
程序
实际上可以运行任何shell命令。。。您是否知道执行
COPY
方法的postgres函数与
PROGRAM
执行的shell命令之间是否有握手?这意味着postgres函数将等待shell命令完成,然后再转到下一个任务。
COPY (SELECT 1) TO PROGRAM '/bin/touch /tmp/created_by_postgres'