【PostgreSQL-9.6.3】临时表
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】临时表相关推荐
- 数据库案例集锦 - 开发者的《如来神掌》
标签 PostgreSQL , PG DBA cookbook , PG Oracle兼容性 , PG 架构师 cookbook , PG 开发者 cookbook , PG 应用案例 背景 「剑魔独 ...
- Oracle数据库错误代码大全总结
ORACLE数据库错误代码大全总结 ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会 ...
- PostgreSQL全局临时表插件pgtt的使用
墨墨导读:本文主要介绍PostgreSQL全局临时表插件pgtt的使用. https://github.com/darold/pgtt 前言 PostgreSQL目前到最新12版本只支持本地临时表不支 ...
- 关于postgresql中with 临时表的使用,筛选出来当天温度比昨天温度高的数据
假设我们有一张表temperature,表结构如下 数据如下 现在我们想筛选出来当天温度比昨天高的id,这时候我们就需要用到临时表,首相将数据构造出来,然后再在临时表上筛选 WITH temperat ...
- PostgreSQL SQL 语言:并行查询
本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1. 并行查询如何工作 当优化器判断对于某一个特定的查询,并行查询是最快的执行策略时,优化器将创建一个查询计划.该计划包括 ...
- PostgreSQL操作问题(转载)
PostgreSQL操作问题 4.1)如何只选择一个查询结果的头几行?或是随机的一行? 如果你只是要提取几行数据,并且你在执行查询中知道确切的行数,你可以使用LIMIT功能. 如果有一个索引与 ORD ...
- 插入,在PostgreSQL中重复更新吗?
本文翻译自:Insert, on duplicate update in PostgreSQL? Several months ago I learned from an answer on Stac ...
- PostgreSQL — Prepared Statement 预编译
目录 文章目录 目录 PREPARE 指令 EXECUTE 指令 DEALLOCATE 指令 EXPLAIN 指令 ANALYZE 指令 ERROR,0A000,"cached plan m ...
- PostgreSQL与MySQL比较
2019独角兽企业重金招聘Python工程师标准>>> 特性 MySQL PostgreSQL 实例 通过执行 MySQL 命令(mysqld)启动实例.一个实例可以管理一个或多个数 ...
- postgresql中自定义函数脚本的备份及恢复
[转自 housonglin1213 的博客]http://blog.csdn.net/housonglin1213/article/details/51005540 1.自定义函数脚本备份 CREA ...
最新文章
- manacher算法----O(n)最长回文串
- b树与b+树的区别_Linux内核-数据结构系列(B树、B-树、B+树)的区别
- 《JavaScript面向对象编程指南》——第1章 引言1.1 回顾历史
- PHP7实战开发简单CMS内容管理系统(8)登录权限控制功能分离
- 论文笔记:ShuffleNet v2
- #pragma once与 #ifndef的区别 (转)
- python IDLE中反斜杠显示为人民币符号¥的解决办法
- java动态添加view
- Spring Boot 2.1 版本变化[翻译]
- 围棋提子后的子放哪_围棋入门知识点:围棋规则 —— 禁入点
- 学python要有多少英语词汇量测试_非常适合新手的一个Python爬虫项目: 打造一个英文词汇量测试脚本!...
- FATA[0000] (省略) Are you trying to connect to a TLS-enabled daemon without TLS?
- 机器学习—K-means聚类、密度聚类、层次聚类理论与实战
- linux 目录权限,Linux目录权限整理总结
- Atitit.论图片类型 垃圾文件的识别与清理 流程与设计原则 与api概要设计 v2 pbj
- leetcode 合并两个有序数组
- 搜狗微信公众号文章抓取
- [POJ 1625] Censored! (AC自动机+DP+高精度)
- Altium designer18 绘制PCB漏线检查
- cocos2d-x 使用 CCScale9Sprite 实现微信对话框
热门文章
- SCHEDULE(调度程序)
- ObjC学习5-变量和数据类型
- USB及手机平板设备插拔响应解决方案
- 11.17 shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令,shell特殊符号
- 在Fedora 14 alpha 下测试Kvm情况(视频)
- 如何创建免费的Hyper-V Server故障转移集群
- Nginx安装及配置文件解释
- 此变量非彼变量(python变量)
- 网络从业人员职业规划路线图
- Asset mangagement Resources(完善中)