Oracle两种临时表的创建及使用方法

Oracle两种临时表的创建及使用方法

目录

临时表的概念

创建临时表

临时表的概念

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

Oracle数据库的临时表可以用来保存一个会话session的数据,或者一个事务中的数据.当查询语句非常的复杂时,我们就可以创建一个临时表保存查询结果,并进行一系列的操作.

创建临时表

创建临时表有两种方式:

事物级临时表 on commit delete rows; 当commit的时候删除数据(默认情况)

会话级临时表 on commit preserve rows; 当commit的时候保留数据创建的时候不加关键字 默认是事物级临时表

会话级临时表

会话级临时表是指表中的数据只会在会话周期中存在,当用户退出会话结束时,Oracle自动清除临时表中当前会话的数据.执行commit或者rollback操作,表内的数据依然存在,新建一个窗口命令(相当于开启了一个新的会话),表内的数据就查询不到了

创建语法:

create global temporary table 临时表名

( 列名 数据类型,

...

)

on commit preserve rows;

事物级临时表

事物级临时表是指表中的数据只在事物的生命周期中存在,当事物结束(commit 或 rollback),Oracle自动清除临时表中的数据,继承会话临时表特点

创建语法:

create global temporary table 临时表名

( 列名 数据类型,

...

)

on commit delete rows;

也可以直接:

create global temporary table 临时表名 as (select结果集);--默认事物级临时表

注意事项

不建议 lob 对象,但实际应用中确实需要此功能时就无法使用临时表了.CREATE GLOBAL TEMPORARY TABLE TMP_TEST( ID NUMBER ,NAME CLOB) ON COMMIT PRESERVE ROWS;

不支持主键外键

临时表不能永久的保存数据

临时表的数据不会备份,恢复,对其的修改也不会有任何的日志信息

临时表不会有DML锁

临时表可以创建临时的索引,试图,触发器

如果要 DROP 会话级临时表,并且包含数据时,必须先截断其中的数据,否则会报错.所有会话都要关闭,或者所有的会话中的数据都为空

命名时以temp_开头

相关推荐

怎么查看手机版本
有人被365黑过钱吗

怎么查看手机版本

📅 09-28 👍 666
童年儿歌合集 音乐专辑 免费下载
有人被365黑过钱吗

童年儿歌合集 音乐专辑 免费下载

📅 07-27 👍 860
AI对齐工具怎么用?9个技巧让设计更精准
365客服电话

AI对齐工具怎么用?9个技巧让设计更精准

📅 09-01 👍 897
lol无限火力结束时间是什么时候
365客服电话

lol无限火力结束时间是什么时候

📅 10-01 👍 124
一款好相机却搞出粉丝PTSD 从Z fc看尼康可持续性药丸
格兰仕油烟机怎么样 格兰仕油烟机价格如何
有人被365黑过钱吗

格兰仕油烟机怎么样 格兰仕油烟机价格如何

📅 08-31 👍 117