从 PostgreSQL 调用 returns JSON 的网络服务

Call a webservice that returns JSON from PostgreSQL

PSQL 中的函数有没有办法调用 returns 和 JSON 的网络服务,并使用此 JSON 在触发器调用中执行数据库中的某些操作?

psql 是命令行客户端应用程序。所以没有。

如果你的意思是pl/pgsql,服务器端函数语言,那么……还是不行。按照设计,它无法建立网络连接、访问文件等。

您可以使用 PL/Python 或 PL/Perl 来执行此操作...但您不应该这样做。如果 Web 服务非常慢,存在 DNS 问题等,您的整个数据库可能会慢到无法正常爬网。

而是使用 LISTENNOTIFY 与外部客户端一起处理工作队列并将结果存储在数据库中。使用 PostgreSQL 9.5 的 SKIP LOCKED 这可以很容易地同时完成。对于 9.4 及更早版本,最简单的方法是串行执行,或者使用一个 worker 管理多个异步请求。

这很像 "how do I send email from a stored procedure" 问题。您可以使用 plperl 或 plpython,但您不应该使用。