• 临时表概述


    临时表保存仅在事务或会话期间存在的数据 

    临时表中的数据是会话私有的。每个会话只能查看和修改自己的数据。

    可以创建全局临时表私有临时表下表显示了它们之间的本质区别。

    Temporary Table Characteristics

    CharacteristicGlobalPrivate
    Naming rules Same as for permanent tables与永久表相同 Must be prefixed with ORA$PTT_ 必须以ORA$PTT为前缀_
    Visibility of table definition All sessions Only the session that created the table
    Storage of table definition Disk Memory only
    Types Transaction-specific (ON COMMIT DELETE ROWS) or session-specific (ON COMMIT PRESERVE ROWS) Transaction-specific (ON COMMIT DROP DEFINITION) or session-specific (ON COMMIT PRESERVE DEFINITION)

    第三种类型的临时表,即游标持续时间临时表,由数据库为某些类型的查询自动创建。A third type of temporary table, known as a cursor-duration temporary table, is created by the database automatically for certain types of queries.

    临时表的目的

    临时表在必须缓冲结果集的应用程序中很有用。

    例如,日程安排应用程序使大学生能够创建可选的学期课程安排。全局临时表中的一行代表每个计划。在会话期间,计划数据是私有的。当学生选择一个时间表时,应用程序将所选时间表的行移动到一个永久表中。在会话结束时,数据库会自动删除全局临时表中的计划数据。

    私有临时表对于动态报告应用程序很有用。例如,客户资源管理 (CRM) 应用程序可能无限期地以同一用户的身份连接,同时多个会话处于活动状态。每个会话创建一个ORA$PTT_crm为每个新事务命名的私有临时表。应用程序可以为每个会话使用相同的表名,但要更改定义。数据和定义仅对会话可见。表定义一直持续到事务结束或手动删除表。

    临时表中的段分配

    与永久表一样,全局临时表是在数据字典中静态定义的持久对象。对于私有临时表,元数据只存在于内存中,但可以驻留在磁盘上的临时表空间中。

    对于全局和私有临时表,数据库会在会话首次插入数据时分配临时段。在会话中加载数据之前,该表显示为空。对于特定于事务的临时表,数据库在事务结束时释放临时段。对于特定于会话的临时表,数据库会在会话结束时释放临时段。

    临时表创建

    CREATE ... TEMPORARY TABLE语句创建一个临时表。

    指定“全局临时表”或“专用临时表”。在这两种情况下,ONCOMMIT子句指定表数据是特定于事务(默认)还是特定于会话。您可以为数据库本身创建临时表,而不是为每个PL/SQL存储过程创建临时表。

    可以使用create INDEX语句为全局(非私有)临时表创建索引。这些索引也是临时的。索引中的数据与临时表中的数据具有相同的会话或事务范围。还可以在全局临时表上创建视图或触发器。

  • 相关阅读:
    nodejs安装autoprefixer
    nodejs安装Yui Compressor
    js捕捉回车事件
    支付宝服务窗前台页面规范
    html5 input type number 去掉加减号
    [USACO10HOL]赶小猪题解
    [USACO09FEB]改造路题解
    [HNOI2013]游走题解
    洛谷P1649 [USACO07OCT]障碍路线Obstacle Course BFS 最小转弯
    洛谷P1467 循环数 Runaround Numbers
  • 原文地址:https://www.cnblogs.com/wonchaofan/p/16755094.html
Copyright © 2020-2023  润新知