暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

LightDB23.1新特性全面支持Oracle临时表

原创 姚崇 2023-03-14
373

临时表的概念

临时表就是用来暂时保存临时数据(亦或叫中间数据)的一个数据库对象,它和普通表有些类似,然而又有很大区别。它只能存储在临时表空间,而非用户的表空间。
ORACLE临时表是会话或事务级别的,只对当前会话或事务可见。每个会话只能查看和修改自己的数据。

临时表的分类

oracle临时表分为会话级临时表和事务级临时表;会话级的临时表只与当前会话相关,只要当前会话还存在,临时表中的数据就还存在,一旦退出当前会话,临时表中的数据也随之被丢弃;而且不同会话中临时表数据是不同的,当前会话只能对当前会话的数据进行操作,无法对别的会话的数据进行操作。而事务级临时表,只在当前事务有效,一旦进行commit事务提交之后,

临时表内的数据就会随着前一个事务的结束而删除。

1、## 会话级临时表

session1

lightdb@postgres=# create global temporary table temp_session(id number,ename varchar2(15))on commit preserve rows;
CREATE TABLE
lightdb@postgres=# insert into temp_session values(1001,'zhangsan');
INSERT 0 1
lightdb@postgres=# select * from temp_session;
  id  |  ename   
------+----------
 1001 | zhangsan
(1 row)

preserve rows:表示在会话结束后清除临时表的数据。
注:会话级临时表在当前会话插入的数据,只在当前会话可以进行操作。

而一旦再开一个会话,前一个会话的数据就查不到了:

session2

[lightdb@node1 ~]$ ltsql
ltsql (13.8-23.1)
Type "help" for help.

lightdb@postgres=# select * from temp_session;
 id | ename 
----+-------
(0 rows)

只要创建当前临时表的会话没退出,就不允许被删除

Oracle的报错如下
image.png
下面是LightDB的报错

lightdb@postgres=# drop table temp_session;
ERROR:  can not drop a gtt that is in use.
lightdb@postgres=# 

2、创建事务级临时表(默认)

lightdb@postgres=# create global temporary table temp_trans(
lightdb@postgres(# id number,
lightdb@postgres(# ename varchar2(15)
lightdb@postgres(# )on commit delete rows;
CREATE TABLE
lightdb@postgres=# insert into temp_trans values(1001,'lisi');
select * from temp_trans;
INSERT 0 1
lightdb@postgres=# select * from temp_trans;
  id  | ename 
------+-------
 1001 | lisi
(1 row)

lightdb@postgres=# create index i_temp_trans on temp_trans(id);
ERROR:  a temporary table has been created and is active, can not add an index on the gtt table in this session.
lightdb@postgres=# select * from temp_trans;
  id  | ename 
------+-------
 1001 | lisi
(1 row)

lightdb@postgres=# commit;
WARNING:  there is no transaction in progress
COMMIT
lightdb@postgres=# select * from temp_trans;
 id | ename 
----+-------
(0 rows)

注:在数据没有提交时,表示该事务还没有结束,此时是可以查到表内数据的

最后修改时间:2023-03-20 16:14:37
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论