检查是否存在临时表

时间:2011-11-16 18:32:27

标签: oracle oracle11g temp-tables

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

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

1 个答案:

答案 0 :(得分:6)

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

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