首页 > 其他分享 >创建临时表

创建临时表

时间:2022-10-05 10:55:28浏览次数:37  
标签:临时 创建 CREATE 表中 DATE 全局

关于创建全局临时表

全局临时表的元数据对多个用户及其会话可见,但其内容是会话本地的。

例如,假设基于 Web 的航空公司预订应用程序允许客户创建多个可选行程。每个行程都由全局临时表中的一行表示。应用程序更新行以反映行程中的变化。当客户决定她想要使用哪个行程时,应用程序将该行程的行移动到一个持久表中。

当客户决定她想要使用哪个行程时,应用程序将该行程的行移动到一个持久表中。

在会话期间,行程数据是私有的。在会话结束时,可选的行程将被删除。

 

全局临时表的定义对所有会话可见,但全局临时表中的数据仅对向表中插入数据的会话可见。

使用该CREATE GLOBAL TEMPORARY TABLE语句创建一个全局临时表。该ON COMMIT子句指示表中的数据是特定于事务(默认)还是特定于会话,其含义如下:

ON COMMIT 设置影响

DELETE ROWS

这将创建一个特定于事务的全局临时表。会话绑定到全局临时表,事务首先插入表中。绑定在事务结束时消失。每次提交后,数据库都会截断表(删除所有行)。

PRESERVE ROWS

这将创建一个特定于会话的全局临时表。会话绑定到全局临时表,第一次插入到会话中的表中。此绑定在会话结束时消失或通过在会话中发出TRUNCATE表而消失。当您终止会话时,数据库会截断表。

创建全局临时表

此语句创建特定于事务的全局临时表:

CREATE GLOBAL TEMPORARY TABLE admin_work_area_trans
        (startdate DATE,
         enddate DATE,
         class CHAR(20))
      ON COMMIT DELETE ROWS;

此语句创建特定于会话的全局临时表:

CREATE GLOBAL TEMPORARY TABLE admin_work_area_session
        (startdate DATE,
         enddate DATE,
         class CHAR(20))
      ON COMMIT PRESERVE ROWS;

可以在全局临时表上创建索引。它们也是临时的,索引中的数据与基础表中的数据具有相同的会话或事务范围。

默认情况下,全局临时表中的行存储在创建该表的用户的默认临时表空间中。但是,在创建全局临时表时,可以使用CREATE global temporary table的tablespace子句将全局临时表分配给另一个表空间。您可以使用此功能来节省全局临时表使用的空间。例如,如果必须执行许多小型全局临时表操作,并且为排序操作配置了默认临时表空间,因此使用了较大的数据块大小,那么这些小型操作将消耗大量不必要的磁盘空间。在这种情况下,最好分配一个具有较小扩展数据块大小的第二个临时表空间。

以下两个语句创建一个扩展大小为64 KB的临时表空间,然后在该表空间中创建一个新的全局临时表。

CREATE TEMPORARY TABLESPACE tbs_t1 
    TEMPFILE 'tbs_t1.f' SIZE 50m REUSE AUTOEXTEND ON
    MAXSIZE UNLIMITED
    EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K;

CREATE GLOBAL TEMPORARY TABLE admin_work_area
        (startdate DATE,
         enddate DATE,
         class CHAR(20))
      ON COMMIT DELETE ROWS
      TABLESPACE tbs_t1;

注意:根据初始化参数private_temp_table_prefix,私有临时表的名称必须加前缀。

Creating a Private Temporary Table

此语句创建特定于事务的专用临时表:

CREATE PRIVATE TEMPORARY TABLE ORA$PTT_sales_ptt_transaction
    (time_id      DATE,
     amount_sold  NUMBER(10,2))
   ON COMMIT DROP DEFINITION;

此语句创建会话特定的专用临时表:

CREATE PRIVATE TEMPORARY TABLE ORA$PTT_sales_ptt_session
    (time_id      DATE,
     amount_sold  NUMBER(10,2))
   ON COMMIT PRESERVE DEFINITION;

默认情况下,私有临时表中的行存储在创建该表的用户的默认临时表空间中。但是,在创建临时表的过程中,可以使用CREATE private temporary table语句的tablespace子句将专用临时表分配给另一个临时表空间。

并行化表创建

当您指定AS SELECT子句来创建一个表并使用另一个表中的数据填充它时,您可以使用并行执行。

 

略。。。。

 

标签:临时,创建,CREATE,表中,DATE,全局
From: https://www.cnblogs.com/wonchaofan/p/16755209.html

相关文章