Oracle和PG数据库临时表的差异,PG数据库如何删除临时表

news2025/3/14 4:25:40

现实的开发过程中使用 PG 数据库删除临时表发现如下报错,提示表 xxx 不存在:
在这里插入图片描述
问题原因: 调用删除语句,但是临时表不存在了。
解决方案: PG下用下面的方式来删除临时表或不进行删除(会话级临时表会自动删除,下面有详细解释)。

DROP TABLE IF EXISTS temp_table_name CASCADE;

代码解决示例:
在这里插入图片描述

Oracle 中的临时表

1. 全局临时表

- 在 Oracle 中,临时表分为全局临时表和本地临时表。
- 全局临时表是对所有用户可见的,数据在会话之间共享,但是会话结束后表中数据会被清除。
- 创建全局临时表时,使用 CREATE GLOBAL TEMPORARY TABLE 语句,并在表定义中指定 ON COMMIT PRESERVE ROWS ,以确保数据在事务提交之前不被清除。注: 如果把 PRESERVE 改成 DELETE 创建的全局临时表会在事务结束后被删除,也称为事物级全局临时表,我们一般使用的就是后者事物级全局临时表。

2. 本地临时表

- 本地临时表是对当前用户可见的,只能在创建该表的会话中使用,其他会话无法访问。
- 本地临时表的数据在会话结束后自动清除,不需要显式清除操作。

3. 表的生命周期

- 在 Oracle 中,全局临时表的生命周期是在会话结束时或者事务结束时,数据会被自动清除。
- 本地临时表的生命周期则是在会话结束时,数据会被自动清除。

4. 语法

- 创建全局临时表: CREATE GLOBAL TEMPORARY TABLE table_name (...) ON COMMIT PRESERVE ROWS;
- 创建本地临时表: CREATE [LOCAL] TEMPORARY TABLE table_name (...) ON COMMIT PRESERVE ROWS;

PostgreSQL 中的临时表

1. 会话临时表

- 在 PostgreSQL 中,临时表是会话级别的,即只对创建它的会话可见。
- 当会话结束时,临时表及其数据会被自动清除。

2. 表的生命周期

- 临时表的生命周期与会话的生命周期相同,当会话结束时,临时表会被自动删除。

3. 语法

- 创建临时表: CREATE TEMPORARY TABLE table_name (...)

4. 支持性

- PostgreSQL 中的临时表更符合 SQL 标准,不同于 Oracle 中的全局临时表和本地临时表的区别, PostgreSQL 中只有一种类型的临时表。

主要区别总结

  • 范围: Oracle 支持全局临时表和本地临时表,而 PostgreSQL 只支持会话临时表。
  • 语法: Oracle 需要在创建临时表时明确指定表的范围(全局或本地),而 PostgreSQL 的语法更简单,只需使用 CREATE TEMPORARY TABLE
  • 清除时机: Oracle 的全局临时表需要手动清除数据,而其他类型的临时表在会话结束时会自动清除; PostgreSQL 中的临时表在会话结束时会自动清除。

拓展1:PG 模拟全局临时表

PostgreSQL 中,你可以通过使用模式( Schema )和特定的权限控制,模拟出一种类似于全局临时表的行为。具体来说,你可以创建一个专门的模式用于存放临时表,然后对其他用户隐藏这个模式,以达到全局临时表的效果。

下面是一个简单的示例,演示了如何在 PostgreSQL 中创建类似全局临时表的行为:
① 创建一个专门的模式用于存放临时表

CREATE SCHEMA global_temp_tables;

② 创建一个临时表,并将其放置在 global_temp_tables 模式下

CREATE TABLE global_temp_tables.temp_table (
    id SERIAL PRIMARY KEY,
    name TEXT
);

③ 对其他用户隐藏 global_temp_tables 模式

REVOKE ALL ON SCHEMA global_temp_tables FROM PUBLIC;

通过以上步骤,其他用户将无法访问或修改 global_temp_tables 模式中的临时表。这样,你就可以在 PostgreSQL 中模拟出一种类似于全局临时表的行为。

需要注意的是,这种方法并不是严格意义上的全局临时表,因为临时表的生命周期仍然受到会话的影响,而不是全局的。然而,通过模式的隔离和权限控制,你可以实现一种在多个会话之间共享临时表的行为。

拓展2:oracle 删除不存在的临时表

Oracle 中,如果尝试删除一个不存在的临时表,不会导致错误。相反, DROP TABLE 语句会静默地返回并继续执行后续的 SQL 语句。这意味着即使尝试删除一个不存在的临时表,也不会产生任何异常或错误消息。 Oracle 中的 DROP TABLE 语句的行为是,如果表不存在,则返回一个 " Table or view does not exist " 信息,但不会中断执行流程。这种行为使得编写脚本时更加容易,不需要在删除表之前检查表是否存在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1598653.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac基础操作、快捷、软件快捷方式

欢迎来到我的博客,代码的世界里,每一行都是一个故事 mac基础操作、快捷、软件快捷方式 前言mac快捷操作快捷查找切换页面页面缩略访达和命令端切换创建文件夹创建文件删除文件/文件夹获取文件的路径移动文件或文件夹复制文件命令端常用命令 前言 主要是方…

姿态估计-人脸识别mesh-3d手势识别-3d目标检测-背景分割-人脸关键点

往期热门博客项目回顾:点击前往 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 AI健身教练-引体向上…

用html画一个睡觉的熊动画

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>睡觉的熊动画</title><link rel"stylesheet" href"./style.css"> </head><body><div id"contain…

第二届数据安全大赛暨首届“数信杯”数据安全大赛数据安全积分争夺赛-东区预赛部分WP

这里写目录标题 1.理论题2.数据安全&#xff1a;3.数据分析&#xff1a;数据分析&#xff08;1&#xff09;数据分析&#xff08;3&#xff09; 前言&#xff1a;第一次参加数信杯&#xff0c;很荣信晋级线下&#xff0c;有点难度好多都要写脚本ovo。 1.理论题 略 2.数据安全…

git操作基本命令

Git命令操作&#xff1a; 1、服务器上面有新的修改&#xff0c;pull出现错误操作如下 git stash git pull origin master git stash pop 2、删除本地一个文件test.py,想重新download远程服务器最新的文件 #git checkout test.py 3、查看当前处于哪一个分支 #git …

中国八大古都,分别是哪8个?

中国历史上统一王朝或者在全局范围内看呈鼎立之势的大的政权的首都&#xff0c;称古都&#xff0c;又称都城、国都等&#xff0c;是古代王朝的政治中心&#xff0c;也是经济和文化中心。 1、西安 西安&#xff0c;古称长安&#xff0c;是中国历史上建都时间最长、建都朝代最多…

[管理者与领导者-167] :团队管理 - 高效执行力 -6-授权-领导者做个统筹调度的领导者,而不是做冲锋陷阵的士兵

目录 关键词&#xff1a; 前言&#xff1a; 一、管理者做自己该做的事&#xff0c;下属做下属该做的事 二、科学分配任务和职责 三、只有信任员工&#xff0c;才能有效授权 四、授权管头&#xff08;定目标&#xff09;管尾&#xff08;把结果&#xff09;&#xff0c;但…

前端开发攻略---在输入框中输入中文但是还没选中的时候,搜索事件依然存在;中文输入法导致的高频事件。

1、演示 解决前 解决后 2、输入框事件介绍 compositionstart事件在用户开始使用输入法输入时触发。这意味着用户正在进行组合输入&#xff0c;比如在中文输入法中&#xff0c;用户可能正在输入一个多个字符的词语。在这个阶段&#xff0c;输入框的内容可能还没有完全确定&#…

亚马逊云科技直冲云霄训练营活动开始啦(送考试半价券)

小李哥分享的是亚马逊科技官方免费直冲云霄训练营学习活动&#xff0c;通过该活动可以薅到以下的羊毛 1️⃣免费系统性技能培训&#xff0c;成为AWS技术大牛 2️⃣考试半价券&#xff0c;最高可省1086元人民币 3️⃣分享活动获得精美礼品 4️⃣亚马逊云科技年度全球技术大会门票…

avicat连接异常,错误编号2059-authentication plugin…

错误原因为密码方式不对&#xff0c;具体可自行百度 首先管理员执行cmd进入 mysql安装目录 bin下边 我的是C:\Program Files\MySQL\MySQL Server 8.2\bin> 执行 mysql -u -root -p 然后输入密码 123456 进入mysql数据库 use mysql 执行 ALTER USER rootlocalhost IDE…

了解以太网环网保护倒换(ERPS)

以太网环网保护交换&#xff08;ERPS&#xff09;有助于实现高可靠性和网络稳定性。本文概述了ERPS&#xff0c;包括其定义、基本概念和优点。 什么是ERPS&#xff1f; 以太网环网保护切换&#xff08;ERPS&#xff09;是一种标准化的网络设计方法&#xff0c;旨在确保以太网…

Day 23 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 总结篇

修剪二叉搜索树 给定一个二叉搜索树&#xff0c;同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[L, R]中 (R>L) 。你可能需要改变树的根节点&#xff0c;所以结果应当返回修剪好的二叉搜索树的新的根节点。 ​ 最直接的想法&#xff0…

iOS修改外部符号指针地址—fishhook原理

上篇文章解释了外部符号加载的原理&#xff0c;知道了外部函数地址最后都保存在__DATA_CONST,__got或__DATA,__lay_symbol_ptr。 因此我们如果想要hook外部函数&#xff0c;只需要在启动后修改这两个段内的值就行。 接下来就是怎么找到某个外部符号在__DATA_CONST,__got或__DA…

【MySQL笔记】InnoDB的插入缓存+非聚簇索引插入的离散性理解

文章目录 为什么需要插入缓存Insert Buffer非聚簇索引插入的离散性 Insert Buffer查看Insert Buffer信息 Insert Buffer的问题Change Buffer总结Reference 为什么需要插入缓存Insert Buffer 磁盘中的主键索引由于天然自增&#xff0c;无须磁盘的随机 I/O&#xff0c;只需不断追…

必示科技与日志易达成深度战略合作,携手共创智能运维新篇章

近日&#xff0c;智能运维企业必示科技与智能日志分析企业日志易达成深度战略合作&#xff0c;双方将在提升产品服务、技术融合创新应用、市场拓展、资源共享和协同效用等方面展开合作&#xff0c;为企业用户提供更全面优质的IT管理智能化服务&#xff0c;共同提升市场影响力&a…

【多线程】单例模式 | 饿汉模式 | 懒汉模式 | 指令重排序问题

文章目录 单例模式一、单例模式1.饿汉模式2.懒汉模式&#xff08;单线程&#xff09;3.懒汉模式&#xff08;多线程&#xff09;改进 4.指令重排序1.概念2.question:3.解决方法4总结&#xff1a; 单例模式 一、单例模式 单例&#xff0c;就是单个实例 在有些场景中&#xff0c…

半导体成品测试详述(Final Test,简称FT)

00、FT的一些概念 半导体成品测试&#xff08;Final Test&#xff0c;简称FT&#xff09;是在芯片封装完成后进行的最后一个测试阶段&#xff0c;其目的是确保芯片在实际应用中的性能和可靠性。FT测试可以包括环境测试、老化测试和应用特定的性能测试。 FT测试主要是为了解决各…

【快速上手STM32】SPI通信协议1.8寸TFT-LCD(ST7735S)

SPI简介 SPI&#xff0c;英文全称Serial Peripheral Interface&#xff0c;即串行外围设备接口&#xff0c;是一种高速、全双工、同步的串行通信总线。 我们之前说过I2C&#xff0c;那么我们就拿I2C和SPI做个对比。 SPI和I2C对比&#xff0c;优势在于SPI的传输速率比I2C快得…

shell脚本学习第一课

shell 简介 解析器 shell脚本基本使用

消息队列中间件,RabbitMQ的使用,死信队列,延迟队列,利用枚举实现队列,交换机,RountKey的声明

目录 0.交换机种类和区别 1.声明队列和交换机以及RountKey 2.初始化循环绑定 3.声明交换机 4.监听队列 4.1 监听普通队列 4.2监听死信队列 5.削峰填谷的实现 0.交换机种类和区别 Direct Exchange&#xff08;直连交换机&#xff09;&#xff1a; 直连交换机将消息发送到…