Oracle临时行,Oracle临时表(Temporary Table)

5268f80b9b1e01f982625ef6fac83ca1.png

指定GLOBAL TEMPORARY创建一个临时表,该表的定义对于具有适当特权的所有会话均可见。临时表中的数据仅对将数据插入表的会话可见。

首次创建临时表时,其元数据存储在数据字典中,但未为表数据分配空间。在表上进行第一次DML操作时,将为表段分配空间。临时表定义的保存方式与常规表的定义相同,但是表段和表包含的任何数据都是会话特定数据或事务特定数据。您可以使用ON COMMIT子句指定表段和数据是特定于会话还是事务。

您可以执行DDL操作(例如ALTERTABLE,DROPTABLE,CREATEINDEX在临时表),只有当没有会话被绑定到它。INSERT通过对该表的操作,会话将绑定到临时表。会话可以使用TRUNCATE语句或在会话终止时解除绑定到临时表,或者对于特定于事务的临时表,通过发出COMMITorROLLBACK语句解除绑定。

PRIVATE TEMPORARY

指定PRIVATE TEMPORARY创建一个私有临时表。

私有临时表与临时表的不同之处在于,它的定义和数据仅在创建它的会话中可见。使用ON COMMIT子句定义私有临时表的范围:transaction或session。ON COMMIT与关键字一起使用的子句DROP DEFINITION创建一个特定于事务的表,在提交事务时将删除其数据和定义。这是默认行为。ON COMMIT与关键字一起使用的子句PRESERVE DEFINITION创建一个特定于会话的表,该表在事务提交时将保留其定义。有关ON COMMIT的用法详细信息,请参见此处条款。

三DDL语句支持专用临时表:CREATE,DROP,和TRUNCATE。

限制条件

您必须是SYS创建私有临时表以外的用户。

也可以看看:

Oracle Database Concepts提供有关临时表和“创建表:临时表示例”的信息

临时表的限制

临时表受以下限制:临时表不能分区,聚集或组织索引。

您不能在临时表上指定任何外键约束。

临时表不能包含嵌套表的列。

不能指定的以下条款LOB_storage_clause:TABLESPACE,storage_clause或logging_clause。

并行UPDATE,DELETE并且MERGE不支持临时表。

segment_attributes_clause您可以为临时表指定的唯一部分是TABLESPACE,它允许您指定单个临时表空间。

临时表不支持分布式事务。

临时表不能包含INVISIBLE列。

私人临时表的限制

除了临时表的一般限制之外,私有临时表还受到以下限制:专用临时表的名称必须始终以init.ora参数定义的前缀为前缀PRIVATE_TEMP_TABLE_PREFIX。默认值为ORA$PTT_。

您不能在私有临时表上创建索引,实例化视图或区域映射。

您不能使用默认值定义列。

您不能在任何永久对象(例如视图或触发器)中引用私有临时表。

通过数据库链接看不到专用临时表。

ON COMMIT

该ONCOMMIT子句仅在创建全局临时表时才相关。此子句指定临时表中的数据在事务或会话期间是否持续存在。

DELETE ROWS

DELETEROWS为特定于事务的临时表指定。这是默认值。每次提交后,Oracle数据库都会截断该表(删除其所有行)。

PRESERVE ROWS

PRESERVEROWS为特定于会话的临时表指定。当您终止会话时,Oracle数据库将截断该表(删除其所有行)。

私有临时表的范围也使用该ON COMMIT子句定义,但使用关键字定义DROPDROP DEFINITION,分别PRESERVEDEFINITION用于定义特定于事务的表或特定于会话的表。

DROP DEFINITION

指定DROPDEFINITION创建一个私有临时表,当事务提交时,其内容和定义将被删除。此专用临时表的范围仅限于事务。这是默认值。

PRESERVE DEFINITION

指定PRESERVEDEFINITION创建一个私有临时表,在提交事务时保留其定义。此专用临时表的范围已扩展到会话。

下面的语句创建了一个临时表today_sales,供示例数据库中的销售代表使用。每个销售代表会话可以在表中存储当天的销售数据。在会话结束时删除临时数据。CREATE GLOBAL TEMPORARY TABLE today_sales(id number(5))

ON COMMIT PRESERVE ROWS

AS SELECT * FROM orders WHERE order_date = SYSDATE;

Oracle临时表(Temporary Table)

标签:嵌套   display   表空间   ati   family   prefix   gpo   href   def

1428d0e076c3959ab11d28a39bc84fab.png

5268f80b9b1e01f982625ef6fac83ca1.png

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:https://www.cnblogs.com/nadian-li/p/12966409.html

你可能感兴趣的:(Oracle临时行)