码迷,mamicode.com
首页 > 数据库 > 详细

ORACLE-临时表

时间:2017-06-01 18:35:50      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:.com   清空   get   根据   监控   rom   commit   ble   独立   

迁移时间:2017年6月1日17:49:39
Author:Marydon
CreateTime--2017年1月20日09:57:48
二、Oracle临时表
  案例:
-- Create table    三目录监控存储过程临时表
create global temporary table L_DIAITEM_ERROR
(
  forgid   NUMBER,            --组织机构id
  forgname VARCHAR2(80),    --组织机构名称
  nccw     NUMBER,            --名称错误数
  wdz      NUMBER            --未对照计数
)
on commit delete rows;        --事务提交时,清空表数据
--插入一条数据
INSERT INTO L_DIAITEM_ERROR (nccw,wdz) SELECT 1,2 FROM DUAL;
--查询该表数据
SELECT * FROM L_DIAITEM_ERROR

  说明:

    执行插入语句后,如果没有提交,执行查询语句,该表有数据;如果提交事务,执行查询语句,该表没数据。

  详细介绍

  参考链接:http://www.cnblogs.com/vigarbuaa/archive/2012/06/04/2534797.html  

  在Oracle8i中,可以创建以下两种临时表:

    (1)会话特有的临时表

    语法:     

      CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>) ON COMMIT PRESERVE ROWS;

    (2)事务特有的临时表

    语法:

      CREATE GLOBAL TEMPORARY <TABLE_NAME> (<column specification>) ON COMMIT DELETE ROWS;

    举例:

      CREATE GLOBAL TEMPORARY TABLE MyTempTable

  区别:

    ON COMMIT DELETE ROWS   说明临时表是事务指定,每次提交后ORACLE将截断表(清空表数据)

    ON COMMIT DELETE ROWS   说明临时表是事务指定,每次提交后ORACLE将截断表(清空表数据)

  作用域:     

    通过CREATE GLOBAL TEMPORARY TABLE命令创建一个临时表,
    对于事务类型的临时表,数据只是在本事务期间存在;对于会话类型的临时表,数据在本会话期间存在。

  临时表的特点:

    可以对临时表创建索引,视图,触发器,可以用export和import工具导入导出表的定义,但是不能导出数据。表的定义对所有的会话可见。

    (1) 多用户操作的独立性:对于使用同一张临时表的不同用户,ORACLE都会分配一个独立的 Temp Segment,这样就避免了多个用户在对同一张临时表操作时发生交叉,从而保证了多个用户操作的并发性和独立性;

    (2) 数据的临时性:既然是临时表,顾名思义,存放在该表中的数据是临时性的。ORACLE根据你创建临时表时指定的参数(On Commit Delete Rows / On Commit Preserve Rows),自动将数据TRUNCATE掉。

 

 

ORACLE-临时表

标签:.com   清空   get   根据   监控   rom   commit   ble   独立   

原文地址:http://www.cnblogs.com/Marydon20170307/p/6930107.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!