有没有办法让 PSQL 中的函数调用返回 JSON 的 Web 服务,并使用此 JSON 在触发器调用中执行数据库中的某些操作?
最佳答案
psql
是命令行客户端应用程序。所以没有。
如果您指的是 pl/pgsql
,服务器端函数语言,那么……还是不行。它在设计上无法建立网络连接、访问文件等。
您可以使用 PL/Python 或 PL/Perl 来执行此操作……但您不应该这样做。如果 Web 服务非常慢,存在 DNS 问题等,您的整个数据库可能会变慢,无法正常爬行。
而是使用 LISTEN
和 NOTIFY
与外部客户端一起处理工作队列并将结果存储在数据库中。使用 PostgreSQL 9.5 的 SKIP LOCKED
这可以很容易地同时完成。在 9.4 及更早版本中,最简单的方式是串行执行,或者使用一个 worker 管理多个异步请求。
这很像“如何从存储过程发送电子邮件”问题。您可以使用 plperl 或 plpython,但您不应该使用。
关于web-services - 调用从 PostgreSQL 返回 JSON 的网络服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34065673/