我正在将postgresql数据库用于使用某些数据库会话参数的Qt应用程序。 我需要使用另一个应用程序连接到数据库 - 可能是BIRT报告或php应用程序或其他 - 但使用与第一个Qt应用程序相同的会话。 这可能吗?
答案 0 :(得分:1)
两个连接到一个会话是不可能的。一个会话只能处理一个连接。可以在事务之间共享快照。某些PostgreSQL应用程序(如pg_dump
)使用此功能来实现-j
选项。共享快照不是共享会话 - 对更改的可见性存在一些限制,并且此功能实际上很少使用。
有关此功能,请参阅related doc或article。
-- first session
BEGIN;
SELECT pg_export_snapshot(); -- returns 00000AAF-1
-- second session
BEGIN;
SET TRANSACTION SNAPSHOT '00000AAF-1';
接下来,两个会话的初始可见内容都相同。 但第一次会议没有看到第二次会议的任何新活动,反之亦然。
答案 1 :(得分:1)
不,不是。在PostgreSQL中,会话与服务器的连接严格关联,因此会话和连接实际上是一个同义词。 当您通过任何通道(TCP,本地)连接到服务器时,postmaster进程将分叉,创建会话的子进程,客户端应用程序正在“处理”并运行事务。当您断开连接时,子进程终止并且会话结束。
或许更多地了解您的要求? Pavel Stehule propose you an interesting feature。但它确实是一种先进的东西,可能并不是你想要的东西。