如何检查 Oracle 临时表是否存在?当我知道它存在时查询 ALL_TABLES 或 USER_TABLES 时我没有看到该表。
此外,为了确保我理解临时表,如果使用 ON COMMIT DELETE ROWS 创建,该表将一直存在,但数据会在 session 结束时删除? session 是指连接何时关闭?
最佳答案
如果您拥有临时表,它将在 USER_TABLES
中列出;如果您对该表具有权限,则将在 ALL_TABLES
中列出。如果它存在于数据库中,它将列在 DBA_TABLES
中,但您可能没有查询 DBA_TABLES
的权限。如果表存在于数据库中但不在 ALL_TABLES
中,则意味着当前用户没有临时表的权限。
是的,临时表将永远存在(当然,一旦创建)。当您指定 ON COMMIT DELETE ROWS
时,临时表中的数据将在事务完成(提交或回滚)时删除。每个 session 将始终只看到它插入到表中的数据,但是当您指定 ON COMMIT DELETE ROWS
时,您进一步限制了数据存在于当前事务的时间。
https://stackoverflow.com/questions/8156784/