从PostgreSQL触发器调用外部程序

时间:2014-02-07 18:11:23

标签: postgresql notifications listener

我希望在触发PostgreSQL触发器时​​执行外部程序(例如.net c#console)。我怎样才能实现它?

2 个答案:

答案 0 :(得分:11)

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

典型的解决方案是使用NOTIFY并为其设置守护程序LISTEN。每种主要的脚本语言都有解决方案......

答案 1 :(得分:5)

自Postgres 9.3以来,有一个调用外部程序的解决方案。出于安全原因,它仅限于用于导出数据的超级用户和恕我直言,而不是在触发器上做通知":

COPY (SELECT 1) TO PROGRAM '/bin/touch /tmp/created_by_postgres'

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

您可以在Postgres文档中找到该功能的文档: http://www.postgresql.org/docs/9.3/static/sql-copy.html