oracle中的测试表,oracle临时表测试

本文详细介绍了Oracle数据库中的临时表,包括SESSION级和TRANSACTION级临时表的创建与使用。SESSION级临时表在会话结束时清除数据,而TRANSACTION级临时表在事务提交或回滚后数据即被清除。通过示例展示了两种临时表的创建及数据持久性的区别,强调了它们在数据安全和互不干扰操作中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ORACLE的临时表在应用系统中有很大的作用,它可以让用户只能够操作各自的数据中而互不干扰,不用担心会破坏或影响其他SESSION/TRANSACTION的数据,这也是数据安全的一种解决方法

临时表分为SESSION、TRANSACTION两种,SESSION级的临时表数据在整个SESSION都存在,直到结束此次SESSION;而TRANSACTION级的临时表数据在TRANACTION结束后消失,即COMMIT/ROLLBACK或结束SESSION都会清除TRANACTION临时表数据。

两种临时表的语法:

create global temporary table 临时表名 on commit preserve|delete rows

用preserve时就是SESSION级的临时表,用delete就是TRANSACTION级的临时表

1、session临时表

SQL> create global temporary table t_tmp_session

2  (id varchar2(10),

3  name varchar2(16))

4  on commit preserve rows;

Table created

SQL> insert into t_tmp_session values('001','sqlee');

1 row inserted

SQL> commit;

Commit complete

SQL> select *from t_tmp_session;

ID         NAME

---------- ----------------

001        sqlee

commit后select发现数据还在,断开该session再select结果如下:

SQL> conn sys/sys as sysdba;

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

Connected as SYS

SQL> conn sqlee/sqlee;

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

Connected as sqlee

SQL> select *from t_tmp_session;

ID         NAME

---------- ----------------

现在发现临时表的数据已经不在了,这就是session级的临时表,session结束会清除数据。

2、TRANACTION临时表

SQL> create global temporary table t_tmp_tranaction

2  (id varchar2(10),

3  name varchar2(16))

4  on commit delete rows;

Table created

SQL> insert into t_tmp_tranaction values('001','sqlee');

1 row inserted

SQL> select *from t_tmp_tranaction;

ID         NAME

---------- ----------------

001        sqlee

SQL> commit;

Commit complete

SQL> select *from t_tmp_tranaction;

ID         NAME

---------- ----------------

这就是tranaction级临时表,commit之后清除数据。

3、用as子句创建tranaction临时表

SQL> select * from t_tmp_session;

ID         NAME

---------- ----------------

001        sqlee

SQL> create global temporary table t_tmp_tranaction_as on commit delete rows

2  as select *from t_tmp_session

3  ;

Table created

SQL> select *from t_tmp_tranaction_as;

ID         NAME

---------- ----------------

因为create table.....as select ....是自动commit的,所以该表也没数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值