oracle基础之临时表

来源:互联网 发布:铝合金门 知乎 编辑:程序博客网 时间:2024/06/09 18:19

/*
ORACLE临时表
1.对每个session来说都是可见的(可以用 desc temp_emp 来获得表结构信息),但是这个表的数据对session来说是私有的,
  每个session只能看到和修改自己的数据。
2.可以定义临时表的两种数据生存时间:transaction-specific or session-specific
  transaction-specific:说明临时表的数据的生存时间是transaction,
                       在transaction结束时就会将临时表中的在这个transaction期间产生的数据删除。
                       用"on commit delete rows"子句来定义。
  session-specific: 说明临时表的数据的生存时间是session,
                       在session结束时就会将临时表中的在这个session期间产生的数据删除。
                       用"on commit preserve rows"子句来定义。
*/

--【不指定临时表数据的生命周期】
create global temporary table testTmp(id number(9),name varchar2 (20));
insert into testTmp values(100,'logy');
select * from testTmp;
--*结果*:在不进行commit或rollback的时候数据可查询到,否则数据被清除


--【指定临时表数据的生命周期为同一事务期间有效】
create global temporary table testTmpTra( id number(9),name varchar2(20)) on commit delete rows;
insert into testTmpTra values(100,'logy');
select * from testTmpTra;
--*结果*:在不进行commit或rollback的时候数据可查询到,否则数据被清除
--*结论*:默认创建临时表为同一事务期间有效

 

--【指定临时表数据的生命周期为同一session期间有效】
create global temporary table testTmpSession( id number(9),name varchar2(20)) on commit preserve rows;

insert into testTmpSession values(100,'logy');
select * from testTmpSession;
--*结果*:commit或rollback的时候数据可查询到,但打开其他session进行执行select发现无数据(重新打开一个PL/SQL Developer窗口执行查询语句)

0 0
原创粉丝点击