Oracle 11g全局临时表生命周期

时间:2012-11-09 16:11:11

标签: oracle11g

我使用以下DDL创建了一个全局临时表:

CREATE GLOBAL TEMPORARY TABLE MY_TEMP_TABLE 
(
  column1  NUMBER,
  column2  NUMBER
)  ON COMMIT PRESERVE ROWS 

然后我将一些数据放入其中并且可以正常阅读。

我关闭了我的SQL客户端会话并重新打开它,表仍然存在,但没有数据。

我的观察结果是正确的,我认为全局临时表在会话之间就像常规永久表一样存在,但它们中的数据只有在填充它的会话中才存在吗?

由于

1 个答案:

答案 0 :(得分:2)

正确。

全局临时表永远存在,就像任何其他数据库对象一样。它是在您安装应用程序时(而不是在运行时)创建的,就像任何其他数据库对象一样。

如果指定ON COMMIT PRESERVE ROWS,则数据会在会话的生命周期内持续存在(并且仅对插入会话的会话可见)。如果指定ON COMMIT DELETE ROWS,则数据仅在事务的生命周期内保留(并且仅对插入事务的事务可见)。