已创建临时表通过 CREATE GLOBAL TEMPORARY TABLE 语句进行创建。应用程序第一次使用连接来引用已创建临时表时,会将这个已创建临时表的一个专用版本实例化,以供使用该连接的应用程序使用。
各个连接对已创建临时表名的引用将引用同一个持久已创建临时表定义,但各个连接将引用当前服务器上不同的已创建临时表实例。如果未对所引用的已创建临时表名进行限定,那么将使用应用于 SQL 语句的标准限定规则隐式地对其进行限定。
所有者隐式地对已创建临时表拥有所有表特权,并且有权删除该表。所有者的表特权可以被授予和撤销(可以逐个特权地进行授予和撤销,也可以通过 ALL 子句进行)。另一个授权标识只有被授予已创建临时表的适当特权之后,才能访问该表。
支持索引以及用于修改数据的 SQL 语句(例如 INSERT、UPDATE 和 DELETE)。只能在已创建临时表所在的表空间中创建索引。
对于 CREATE GLOBAL TEMPORARY TABLE 语句:锁定和恢复功能不适用;仅当指定了 LOGGED 子句时,日志记录功能才适用。要了解更多选项,请参阅 CREATE GLOBAL TEMPORARY 语句。
不能创建基于已创建临时表的具体化查询表 (MQT)。
有关更多信息,请参阅 CREATE GLOBAL TEMPORARY TABLE 语句。
CREATE GLOBAL TEMPORARY TABLE temptbl
LIKE empltabl
ON COMMIT DELETE ROWS
NOT LOGGED
IN usr_tbsp
此语句创建名为 temptbl 的临时表。对此表定义的列名和列描述与 empltabl 的列名和列描述完全相同。隐式定义只包括 empltab1 中的各个列的列名、数据类型、可空性特征和列缺省值属性。未以隐式方式定义所有其他列属性,其中包括唯一约束、外键约束、触发器和索引。
COMMIT 始终从表中删除行。如果已对该表打开任何 HOLD 游标,那么可以使用 TRUNCATE 语句删除那些游标(速度较快),但在“正常情况”下,必须逐行进行删除。系统不记录对临时表所作的更改。临时表将被放入指定的用户临时表空间 usr tbsp。此表空间必须存在,否则创建此表将失败。
将已创建临时表实例化的应用程序与数据库断开连接时,该应用程序的已创建临时表实例将被删除。