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 对象,但实际应⽤中确实需要此功能时就⽆法使⽤临时表了.古惑仔6胜者为王国语
CREATE GLOBAL TEMPORARY TABLE TMP_TEST
( ID NUMBER ,
NAME CLOB
) ON COMMIT PRESERVE ROWS;
不⽀持主键外键
临时表不能永久的保存数据
临时表的数据不会备份,恢复,对其的修改也不会有任何的⽇志信息
临时表不会有DML锁
临时表可以创建临时的索引,试图,触发器金紫公园
如果要 DROP 会话级临时表,并且包含数据时,必须先截断其中的数据,否则会报错.所有会话都要关闭,或者所有的会话中的数据都为空命名时以temp_开头

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。