什么时候Oracle会话临时表中的数据会被删除?

时间:2011-11-23 10:45:20

标签: sql oracle temp-tables

我已经读过,在会话表中,数据在提交过程中仍然存在。用Ask Tom的话来说。

  

ON COMMIT PRESERVE ROWS使这个会话成为临时会议   表。在注销之前,行将保留在此表中。只有我能看到   尽管如此,即使在我之后也没有其他会话会看到“我的”行   提交

这里的问题短语是“直到注销”。以Web应用程序为例,该应用程序与DB保持单一连接。因此,这意味着登录到Web应用程序的所有用户将共享相同的数据库会话。那么,这是否意味着所有用户都会在该临时表中看到相同的内容?

在实际的Web应用程序中,我们通常会维护多个数据库连接。这些连接保存在“池”中,并且可以为许多用户重用它们。在这种情况下,行为可能非常不稳定,用户可能会查看上一个用户填充的数据。

1 个答案:

答案 0 :(得分:7)

这也是Oracle提供“ON COMMIT DELETE ROWS”选项的原因。

全局临时表中的数据可以具有会话范围(即ON COMMIT PRESERVE ROWS)或事务范围(ON COMMIT DELETE ROWS)。

显然,在连接池和共享服务器/共享会话的情况下,您需要事务范围(ON COMMIT DELETE ROWS)。

希望有所帮助。