我希望在触发PostgreSQL触发器时执行外部程序(例如.net c#console)。我怎样才能实现它?
答案 0 :(得分:11)
出于安全原因,Postgres通常无法运行外部程序。
答案 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