是否有可能在postgress函数中生成一个新进程来运行一个函数?或者根据文档,我是否仅限于原始请求的每个数据库连接一个线程?
单独的进程是创建和填充动态命名的表,不返回任何数据,并且独立于产生函数。在Postgresql 8.3。
答案 0 :(得分:2)
程序语言应该做到这一点,例如:一个不受信任的人,例如PL/PerlU。
其他可能的选项包括Pl/Python, Pl/Ruby, Pl/SH...。
答案 1 :(得分:1)
不要这样做。如果你产生一个单独的过程,它将搞乱你所拥有的任何交易假设。在同一个过程中完成所有工作。如果必须,请将Listen / Notify视为让单独的守护程序知道如何工作的方法,并注意NOTIFY将在事务提交时引发。
答案 2 :(得分:1)
听起来你想在PL / PgSQL程序中运行异步查询。如果是这样,您可以使用dblink
。甚至在你正在运行的古老且不受支持的版本中也是如此。参见手册;您想要的功能是dblink
扩展名中的dblink_send_query
。
请记住,以这种方式运行的任何SQL都将在自己的事务中运行。它将独立于您的主要交易提交或回滚,并且它将无法看到您的主要交易所做的任何未提交的更改。
从客户端应用程序中执行此类操作通常更好。