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

##创建会话级临时表,PG中默认创建的就是会话级的。
test=# create TEMPORARY table tmp1 (id int primary key,note text);
CREATE TABLE##查看表属性,schema为“pg_temp_x”,其中“x”代表一个数字,不同的session这个数字不同。
test=# \dList of relationsSchema | Name | Type | Owner
-----------+------+-------+----------pg_temp_3 | tmp1 | table | postgres
(1 row)##退出会话
test=# \q##重新登录会话
[postgres@drz bin]$ psql test;
psql (8.4.18, server 9.6.3)
WARNING: psql version 8.4, server version 9.6.Some psql features might not work.
Type "help" for help.##再次查看,临时表已经消失
test=# \d
No relations found.

2. 事务级临时表
在创建事务级临时表语句中需要加上"on commit delete rows"子句。

##创建事务级临时表
test=# create TEMPORARY table tmp2 (id int primary key,note text) on commit delete rows;
CREATE TABLE##开始一个事务
test=# begin;
BEGIN##插入测试数据
test=# insert into tmp2 values (1,'Tom');
INSERT 0 1
test=# insert into tmp2 values (2,'Peter');
INSERT 0 1##查看表中数据
test=# select * from tmp2;id | note
----+-------1 | Tom2 | Peter
(2 rows)##结束事务
test=# end;
COMMIT##再次查看,表中数据已经消失,因为事务级临时表中数据只存在于事务的生命周期中
test=# select * from tmp2;id | note
----+------
(0 rows)

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

The End!

2017-08-15

【PostgreSQL-9.6.3】临时表相关推荐

  1. 数据库案例集锦 - 开发者的《如来神掌》

    标签 PostgreSQL , PG DBA cookbook , PG Oracle兼容性 , PG 架构师 cookbook , PG 开发者 cookbook , PG 应用案例 背景 「剑魔独 ...

  2. Oracle数据库错误代码大全总结

    ORACLE数据库错误代码大全总结 ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会 ...

  3. PostgreSQL全局临时表插件pgtt的使用

    墨墨导读:本文主要介绍PostgreSQL全局临时表插件pgtt的使用. https://github.com/darold/pgtt 前言 PostgreSQL目前到最新12版本只支持本地临时表不支 ...

  4. 关于postgresql中with 临时表的使用,筛选出来当天温度比昨天温度高的数据

    假设我们有一张表temperature,表结构如下 数据如下 现在我们想筛选出来当天温度比昨天高的id,这时候我们就需要用到临时表,首相将数据构造出来,然后再在临时表上筛选 WITH temperat ...

  5. PostgreSQL SQL 语言:并行查询

    本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1. 并行查询如何工作 当优化器判断对于某一个特定的查询,并行查询是最快的执行策略时,优化器将创建一个查询计划.该计划包括 ...

  6. PostgreSQL操作问题(转载)

    PostgreSQL操作问题 4.1)如何只选择一个查询结果的头几行?或是随机的一行? 如果你只是要提取几行数据,并且你在执行查询中知道确切的行数,你可以使用LIMIT功能. 如果有一个索引与 ORD ...

  7. 插入,在PostgreSQL中重复更新吗?

    本文翻译自:Insert, on duplicate update in PostgreSQL? Several months ago I learned from an answer on Stac ...

  8. PostgreSQL — Prepared Statement 预编译

    目录 文章目录 目录 PREPARE 指令 EXECUTE 指令 DEALLOCATE 指令 EXPLAIN 指令 ANALYZE 指令 ERROR,0A000,"cached plan m ...

  9. PostgreSQL与MySQL比较

    2019独角兽企业重金招聘Python工程师标准>>> 特性 MySQL PostgreSQL 实例 通过执行 MySQL 命令(mysqld)启动实例.一个实例可以管理一个或多个数 ...

  10. postgresql中自定义函数脚本的备份及恢复

    [转自 housonglin1213 的博客]http://blog.csdn.net/housonglin1213/article/details/51005540 1.自定义函数脚本备份 CREA ...

最新文章

  1. manacher算法----O(n)最长回文串
  2. b树与b+树的区别_Linux内核-数据结构系列(B树、B-树、B+树)的区别
  3. 《JavaScript面向对象编程指南》——第1章 引言1.1 回顾历史
  4. PHP7实战开发简单CMS内容管理系统(8)登录权限控制功能分离
  5. 论文笔记:ShuffleNet v2
  6. #pragma once与 #ifndef的区别 (转)
  7. python IDLE中反斜杠显示为人民币符号¥的解决办法
  8. java动态添加view
  9. Spring Boot 2.1 版本变化[翻译]
  10. 围棋提子后的子放哪_围棋入门知识点:围棋规则 —— 禁入点
  11. 学python要有多少英语词汇量测试_非常适合新手的一个Python爬虫项目: 打造一个英文词汇量测试脚本!...
  12. FATA[0000] (省略) Are you trying to connect to a TLS-enabled daemon without TLS?
  13. 机器学习—K-means聚类、密度聚类、层次聚类理论与实战
  14. linux 目录权限,Linux目录权限整理总结
  15. Atitit.论图片类型 垃圾文件的识别与清理  流程与设计原则 与api概要设计 v2 pbj
  16. leetcode 合并两个有序数组
  17. 搜狗微信公众号文章抓取
  18. [POJ 1625] Censored! (AC自动机+DP+高精度)
  19. Altium designer18 绘制PCB漏线检查
  20. cocos2d-x 使用 CCScale9Sprite 实现微信对话框

热门文章

  1. SCHEDULE(调度程序)
  2. ObjC学习5-变量和数据类型
  3. USB及手机平板设备插拔响应解决方案
  4. 11.17 shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令,shell特殊符号
  5. 在Fedora 14 alpha 下测试Kvm情况(视频)
  6. 如何创建免费的Hyper-V Server故障转移集群
  7. Nginx安装及配置文件解释
  8. 此变量非彼变量(python变量)
  9. 网络从业人员职业规划路线图
  10. Asset mangagement Resources(完善中)