Postgresql的临时表的用法

Postgresql的临时表的用法

临时表解释:

PostgreSQL中的临时表分两种,一种是会话级临时表,一种是事务级临时表。在会话级临时表中,数据可以存在于整个会话的生命周期中,在事务级临时表中的数据只能存在于事务的生命周期中。

  1. 不管是会话级还是事务级的临时表,当会话结束后,临时表会消失,这和Oracle数据库不同。Oracle数据库当会话结束后,数据消失,而表依然存在。
  2. “ON COMMIT” 子句有三种形式,默认使用的是PRESERVE ROWS:
    (1)ON COMMIT PRESERVE ROWS 表示临时表的数据在事务结束后保留;
    (2)ON COMMIT DELETE ROWS 表示临时表的数据在事务结束后truncate掉;
    (3)ON COMMIT DROP 表示临时表在事务结束后删除。

临时表与永久表相似,数据是存储到数据库里,相当于第二次直接关联的是一个小表,查询效率大大提高,表和数据可以根据需求是否保留。

法一创建临时表,再批量导入数据

---创建临时表
CREATE TEMPORARY TABLE temp_table (
  id int,
	name varchar(50),
	age int,
)ON COMMIT PRESERVE ROWS;
---验证临时表(无数据)
SELECT * FROM temp_table;
---批量导入数据
INSERT INTO temp_table(
 id,
 name,
 age
)
SELECT
	id,
	name,
	age
FROM target_table;

一般不使用法一,临时表每个字段都需要自己定义,毕竟有些数据结果集需要先存储起来再处理,也不能定义的字段都考虑到。

法二直接从结果集创建临时表

---根据查询的结果集生成临时表不需要每个字段都定义
CREATE TEMPORARY TABLE temp_table AS (SELECT * FROM target_table);
---验证临时表
SELECT * FROM temp_table;
---删除临时表
DROP TABLE temp_table;

---本次使用完临时表后临时表和数据都保留
CREATE TEMPORARY TABLE temp_table ON COMMIT PRESERVE ROWS AS (SELECT * FROM target_table);
---本次使用完临时表后临时表保留数据清空
CREATE TEMPORARY TABLE temp_table ON COMMIT DELETE ROWS AS (SELECT * FROM target_table);
---本次使用完临时表后自动删除
CREATE TEMPORARY TABLE temp_table ON COMMIT DROP AS (SELECT * FROM target_table);
posted @   EmptyJar  阅读(9011)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
点击右上角即可分享
微信分享提示