0

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

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

然后我将一些数据放入其中,并且可以很好地读取它。

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

我的观察是否正确,即全局临时表在会话之间持续存在,就像常规的永久表一样,但其中的数据仅在填充它的会话中存在?

谢谢

4

1 回答 1

2

正确的。

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

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

于 2012-11-09T16:16:06.917 回答