PostgreSQL 如何知道临时表是当前会话还是其他会话创建的

  1. 云栖社区>
  2. 阿里云数据库ApsaraDB>
  3. 博客>
  4. 正文

PostgreSQL 如何知道临时表是当前会话还是其他会话创建的

德哥 2019-04-27 18:48:23 浏览396
展开阅读全文

标签

PostgreSQL , 临时表 , 会话 , pg_table_is_visible


背景

PostgreSQL 不同的会话,可以创建同名的临时表,但是这个临时表是当前会话还是其他会话创建的呢?

create table stage.abc(id int);  
  
create temp table abc (like stage.abc);  
postgres=# select relname,relpersistence from pg_class where relname='abc';  
 relname | relpersistence   
---------+----------------  
 abc     | p  
 abc     | t  
(2 rows)  

通过pg_table_is_visible函数可以区分,这个临时表是当前会话,还是其他会话创建的

postgres=# select relname,relpersistence from pg_class where relpersistence='t' and relname='abc' and pg_table_is_visible(oid);    
 relname | relpersistence   
---------+----------------  
(0 rows)  

参考

《PostgreSQL Oracle 兼容性之 - 全局临时表 global temp table》

https://www.postgresql.org/docs/11/functions-info.html

网友评论

登录后评论
0/500
评论
德哥
+ 关注
所属云栖号: 阿里云数据库ApsaraDB