【问题标题】:Check to see if a Temporary Table exists检查是否存在临时表
【发布时间】:2011-12-30 16:53:26
【问题描述】:

如何检查 Oracle 临时表是否存在?当我知道它存在时查询 ALL_TABLES 或 USER_TABLES 时,我没有看到该表。

另外,为了确保我理解临时表,如果使用 ON COMMIT DELETE ROWS 创建,该表将始终存在,但会话结束时数据将被删除?会话是指连接何时关闭?

【问题讨论】:

    标签: oracle oracle11g temp-tables


    【解决方案1】:

    如果您拥有临时表,则该表将列在 USER_TABLES 中;如果您对该表具有权限,则该表将列在 ALL_TABLES 中。如果它存在于数据库中,它将在DBA_TABLES 中列出,但您可能没有权限查询DBA_TABLES。如果该表存在于数据库中但不在ALL_TABLES中,则表示当前用户没有临时表的权限。

    是的,临时表将始终存在(当然,一旦创建)。当您指定ON COMMIT DELETE ROWS 时,临时表中的数据将在事务完成(提交或回滚)时被删除。每个会话将始终只看到它已插入表中的数据,但是当您指定 ON COMMIT DELETE ROWS 时,您将进一步限制数据存在于当前事务的时间。

    【讨论】:

    • 我可以在 USER_TABLES 下找到它。我认为我的查询设置不正确。 ON COMMIT 信息也很有用。谢谢。
    • select * from user_tables where temporary = 'Y'
    猜你喜欢
    • 1970-01-01
    • 2011-09-25
    • 2013-06-18
    • 2010-10-14
    • 1970-01-01
    • 2012-06-28
    • 2013-05-27
    • 2011-09-14
    • 1970-01-01
    相关资源
    最近更新 更多