oracle基础之临时表

/*
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值