Проверьте, существует ли временная таблица

Как проверить, существует ли временная таблица Oracle? Я не вижу таблицу при запросе ALL_TABLES или USER_TABLES, когда я знаю, что она существует.

Кроме того, чтобы убедиться, что я понимаю временные таблицы, если они созданы с помощью ON COMMIT DELETE ROWS, таблица всегда будет существовать, но данные будут удалены по окончании сеанса? Имеется в виду сеанс, когда соединение закрыто?


person Stealth Rabbi    schedule 16.11.2011    source источник


Ответы (1)


Временная таблица будет указана в USER_TABLES, если она вам принадлежит, и в ALL_TABLES, если у вас есть права на эту таблицу. Он будет указан в DBA_TABLES, если он существует в базе данных, но у вас может не быть прав для запроса DBA_TABLES. Если таблица существует в базе данных, но ее нет в ALL_TABLES, это означает, что текущий пользователь не имеет привилегий для временной таблицы.

Да, временная таблица будет существовать всегда (разумеется, после того, как она будет создана). Если вы укажете ON COMMIT DELETE ROWS, данные во временной таблице будут удалены после завершения транзакции (либо фиксации, либо отката). Каждый сеанс всегда будет видеть только те данные, которые он вставил в таблицу, но когда вы указываете ON COMMIT DELETE ROWS, вы дополнительно ограничиваете время существования данных для текущей транзакции.

person Justin Cave    schedule 16.11.2011
comment
Мне удалось найти его в разделе USER_TABLES. Не думаю, что мой запрос настроен правильно. Информация ON COMMIT тоже оказалась полезной. Благодарю. - person Stealth Rabbi; 17.11.2011
comment
выберите * из user_tables, где временно = 'Y' - person hello_earth; 10.03.2017