调用从 PostgreSQL 返回 JSON 的网络服务

Tah*_*lal 0 postgresql web-services psql

有没有办法让 PSQL 中的函数调用返回 JSON 的 Web 服务并使用此 JSON 在触发器调用中在数据库中执行某些操作?

Cra*_*ger 5

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

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

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

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

这很像“如何从存储过程发送电子邮件”问题。您可以使用 plperl 或 plpython,但不应该使用。