我使用以下DDL创建了一个全局临时表:
CREATE GLOBAL TEMPORARY TABLE MY_TEMP_TABLE
(
column1 NUMBER,
column2 NUMBER
) ON COMMIT PRESERVE ROWS
然后我将一些数据放入其中并且可以正常阅读。
我关闭了我的SQL客户端会话并重新打开它,表仍然存在,但没有数据。
我的观察结果是正确的,我认为全局临时表在会话之间就像常规永久表一样存在,但它们中的数据只有在填充它的会话中才存在吗?
由于
答案 0 :(得分:2)
正确。
全局临时表永远存在,就像任何其他数据库对象一样。它是在您安装应用程序时(而不是在运行时)创建的,就像任何其他数据库对象一样。
如果指定ON COMMIT PRESERVE ROWS
,则数据会在会话的生命周期内持续存在(并且仅对插入会话的会话可见)。如果指定ON COMMIT DELETE ROWS
,则数据仅在事务的生命周期内保留(并且仅对插入事务的事务可见)。