2011-11-16 106 views
1

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

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

回答

6

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

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

+0

我能在USER_TABLES下找到它。我不认为我的查询设置正确。 ON COMMIT信息也很有用。谢谢。 –

+1

select * from user_tables where temporary ='Y' –