临时表在哪里创建?

时间:2010-06-14 12:25:47

标签: postgresql

在哪里可以找到postgresql文件夹中创建的临时表?如果我select * from temp_table;然后我得到了结果,但是看不到我的数据库到PgAdmin的结构?

2 个答案:

答案 0 :(得分:7)

临时表被放入名为“pg_temp_NNN”的模式中,其中“NNN”表示您连接到哪个服务器后端。这会隐式添加到创建它们的会话中的搜索路径中。

请注意,您无法通过另一个连接访问一个连接的临时表...因此,根据pgAdmin如何组织其连接,即使能够在对象资源管理器中找到这些表,也可能没用。

答案 1 :(得分:1)

以下是获取会话的pg_temp_ nnn 架构名称的一种方法:

select distinct 'pg_temp_'||sess_id from pg_stat_activity where procpid = pg_backend_pid()

这将标识正在运行该SQL语句本身的会话,并返回它正在运行的会话ID。

然后,您可以使用它来列出所有临时表:

select * 
from information_schema.tables 
where table_schema = 
  ( select distinct 'pg_temp_'||sess_id 
    from pg_stat_activity 
    where procpid = pg_backend_pid()
  )

或者获取表格结构:

select * 
from information_schema.columns 
where table_schema = 
  ( select distinct 'pg_temp_'||sess_id 
    from pg_stat_activity 
    where procpid = pg_backend_pid()
  )
and table_name = 'my_temp_table'
order by ordinal_position