当前位置:网站首页>oracle临时表与pg临时表的区别
oracle临时表与pg临时表的区别
2022-08-04 05:28:00 【大黄猫一号】
入职后师傅让查询pg临时表与oracle全局临时表的区别以及oracle临时表转pg的思路,一下全部为自己实践所得,有错误的地方欢迎评论更正。。。
Pg临时表:pg临时表分为会话级的以及事务级别的。
会话级别:数据可以一直保存在整个会话表的生命周期中,如果结束当前会话,则清空表中的数据并删除表。在此会话期间可以直接对表的字段以及数据进行更改,其他会话不能访问当前的临时表。
事务级别:(1)on commit delete rows:可以以此命令在一个会话中创建临时表,并且在开始事务之前与之后更改表字段,可以在事务开始之前使用dml语句,但是表中内容并没有实质性变化,在开始事务后能对表中字段的数据进行增删改查。在提交事务之后清除表中的数据。
(2)On commit drop:只能在事务中创建,并且结束事务后自动删除表。
Oracle临时表:Oracle临时表分为会话级的以及事务级别的。
会话级别:数据可以保持在整个会话层面。
事务级别:在commit以及rollback后会清除表中的数据
Pg临时表与oracle临时表的区别:
Pg临时表只存在与当前会话中,其他会话无法访问临时表,并且结束会话将删除临时表。Oracle临时表创建后,虽然各个会话间的数据是互相隔离的,也就是一个会话看不到其他会话的数据,但定义的字段是共用的。并且结束会话后表的定义仍然会存在,只是将表中的数据清除。
Oracle临时表字段的更改只能在当前所有会话没有对表进行dml操作时进行。如果其中一个会话更改表中的数据,则无法进行ddl操作。
Oracle临时表的删除:
事务级别:只有所有的会话全部提交才能删除。
会话级别:所有会话对表执行dml语句之前才能删除。
oracle临时表转pg临时表的想法:首先需要给表加锁,使得只有当前会话才能访问临时表,同时需要将表中的其他锁解除(感觉oracle临时表都被加锁使得对字段中数据更改后无法改变表中字段的定义,具体有没有或者加的什么锁不是清楚),同时在会话结束时应该自动删除临时表。(这一部分为思路,因为一些原因无法实际操作)
边栏推荐
猜你喜欢
随机推荐
flink-sql所有语法详解
iptables防火墙
NFT市场以及如何打造一个NFT市场
lambda函数用法总结
自动化运维工具Ansible(4)变量
计算属性的作用及使用?
剑指 Offer 2022/7/2
剑指 Offer 2022/7/9
显式调用类的构造函数(而不是用赋值构造),实现一个new操作
ReentrantLock(公平锁、非公平锁)可重入锁原理
自动化运维工具Ansible(7)roles
CTFshow—Web入门—信息(1-8)
记一次flink程序优化
flink自定义轮询分区产生的问题
JS实现上一个、下一个、置顶、置底操作
Oracle备份脚本
keep-alive的使用及详解
PHP实现异步执行程序
关系型数据库-MySQL:二进制日志(binlog)
编程Go:内置打印函数 print、println 和 fmt 包中 fmt.Print、fmt.Println 的区别