【发布时间】:2011-12-30 16:53:26
【问题描述】:
如何检查 Oracle 临时表是否存在?当我知道它存在时查询 ALL_TABLES 或 USER_TABLES 时,我没有看到该表。
另外,为了确保我理解临时表,如果使用 ON COMMIT DELETE ROWS 创建,该表将始终存在,但会话结束时数据将被删除?会话是指连接何时关闭?
【问题讨论】:
标签: oracle oracle11g temp-tables
如何检查 Oracle 临时表是否存在?当我知道它存在时查询 ALL_TABLES 或 USER_TABLES 时,我没有看到该表。
另外,为了确保我理解临时表,如果使用 ON COMMIT DELETE ROWS 创建,该表将始终存在,但会话结束时数据将被删除?会话是指连接何时关闭?
【问题讨论】:
标签: oracle oracle11g temp-tables
如果您拥有临时表,则该表将列在 USER_TABLES 中;如果您对该表具有权限,则该表将列在 ALL_TABLES 中。如果它存在于数据库中,它将在DBA_TABLES 中列出,但您可能没有权限查询DBA_TABLES。如果该表存在于数据库中但不在ALL_TABLES中,则表示当前用户没有临时表的权限。
是的,临时表将始终存在(当然,一旦创建)。当您指定ON COMMIT DELETE ROWS 时,临时表中的数据将在事务完成(提交或回滚)时被删除。每个会话将始终只看到它已插入表中的数据,但是当您指定 ON COMMIT DELETE ROWS 时,您将进一步限制数据存在于当前事务的时间。
【讨论】: