PostgreSQL从两个不同的应用程序连接到同一个会话

时间:2015-10-11 14:52:56

标签: postgresql

我正在将postgresql数据库用于使用某些数据库会话参数的Qt应用程序。 我需要使用另一个应用程序连接到数据库 - 可能是BIRT报告或php应用程序或其他 - 但使用与第一个Qt应用程序相同的会话。 这可能吗?

2 个答案:

答案 0 :(得分:1)

两个连接到一个会话是不可能的。一个会话只能处理一个连接。可以在事务之间共享快照。某些PostgreSQL应用程序(如pg_dump)使用此功能来实现-j选项。共享快照不是共享会话 - 对更改的可见性存在一些限制,并且此功能实际上很少使用。

有关此功能,请参阅related docarticle

-- 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。但它确实是一种先进的东西,可能并不是你想要的东西。