App*_*rew 4 sql oracle temp-tables
我已经读过,在会话表中,数据在提交过程中仍然存在.用Ask Tom的话来说.
ON COMMIT PRESERVE ROWS使这成为一个基于会话的临时表.在注销之前,行将保留在此表中.只有我可以看到它们,即使我提交后也没有其他会话会看到"我的"行
这里的问题短语是"直到注销".以Web应用程序为例,该应用程序与DB保持单一连接.因此,这意味着登录到Web应用程序的所有用户将共享相同的数据库会话.那么,这是否意味着所有用户都将在该临时表中看到相同的内容?
在实际的Web应用程序中,我们通常会维护多个DB连接.这些连接保存在"池"中,并且可以为许多用户重用它们.在这种情况下,行为可能非常不稳定,用户可能会查看上一个用户填充的数据.
这也是Oracle提供"ON COMMIT DELETE ROWS"选项的原因.
全局临时表中的数据可以具有会话范围(即ON COMMIT PRESERVE ROWS)或事务范围(ON COMMIT DELETE ROWS).
显然,在连接池和共享服务器/共享会话的情况下,您将需要事务范围(ON COMMIT DELETE ROWS).
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
6458 次 |
| 最近记录: |