Oracle临时表

一、什么是临时表
Oracle的临时表只在事务(transaction )或者会话(session )期间保持数据。临时表中的数据对于会话(session)来说是私有的,这意味这每个会话只能查看和修改自己的数据。
对于应用程序而言,临时表对于一些需要暂时缓存的数据是非常有用的。

二、创建临时表
CREATE GLOBAL TEMPORARY TABLE
语句创建一个临时表。子句ON COMMIT表示是否是事务级别或者会话级别,默认是事务级别。可以为临时表创建索引。为临时表创建的索引也是临时的。临时表上创建的索引与表具有相同的级别。

三、实验部分
实验环境:

点击(此处)折叠或打开

  1. SQL> select * from v$version;

  2. BANNER
  3. ----------------------------------------------------------------
  4. Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
  5. PL/SQL Release 10.2.0.4.0 - Production
  6. CORE 10.2.0.4.0 Production
  7. TNS for Linux: Version 10.2.0.4.0 - Production
  8. NLSRTL Version 10.2.0.4.0 - Production
事务级别的临时表:

点击(此处)折叠或打开

  1. SQL> create global temporary table t_trans
  2.   2 ( id number)
  3.   3 on commit delete rows;

  4. Table created.
    插入语句: 

点击(此处)折叠或打开

  1. SQL> insert into t_trans values(1);

  2. 1 row created.
    查询

点击(此处)折叠或打开

  1. SQL> select * from t_trans;

  2.         ID
  3. ----------
  4.          1
    显示提交并查询

点击(此处)折叠或打开

  1. SQL> commit;

  2. Commit complete.

  3. SQL> select * from t_trans;

  4. no rows selected
    重新插入数据,隐式提交,并查询

点击(此处)折叠或打开

  1. SQL> insert into t_trans values(1);

  2. 1 row created.

  3. SQL> create table t100(id number);

  4. Table created.

  5. SQL> select * from t_trans;

  6. no rows selected
通过上面的实验我们不难验证基于事务的临时表当事务结束是,表里面的数据会清空。

会话级别的临时表:
创建临时表:

点击(此处)折叠或打开

  1. SQL> create global temporary table t_session
  2.   2 (id number)
  3.   3 on commit preserve rows;

  4. Table created.
插入语句,提交,查询:

点击(此处)折叠或打开

  1. SQL> insert into t_session values(1);

  2. 1 row created.

  3. SQL> commit;

  4. Commit complete.

  5. SQL> select * from t_session;

  6.         ID
  7. ----------
  8.          1
用另外一个session查询:

点击(此处)折叠或打开

  1. SQL> select * from t_session;

  2. no rows selected
另外一个session并没有查到数据。

不显示指定ON COMMIT:

点击(此处)折叠或打开

  1. SQL> create global temporary table t_100
  2.   2 (id number);

  3. Table created.

  4. SQL> insert into t_100 values(100);

  5. 1 row created.

  6. SQL> commit;

  7. Commit complete.

  8. SQL> select * from t_100;

  9. no rows selected
与事务级别的效果相同,提交后表中没有数据。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29173997/viewspace-1164686/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29173997/viewspace-1164686/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值