Временные пользовательские таблицы в прямом SQL |
Считается, что время жизни временных таблиц ограничено сессией пользователя. Поэтому прикладной алгоритм, желающий воспользоваться временными таблицами, должен создавать их каждый раз при повторном запуске
. При этом удалять временные таблицы не нужно, они умрут сами после выхода из системы. Однако никто не мешает это сделать явно. Например, для какого-то циклического алгоритма.Могут не работать некоторые особенности
, типа автонумерации NRec'ов, хитрые нулевые индексы и т.д.Некоторые индексы приводят к созданию зеркальных полей в таблицах. Эти поля создаются только в случае наличия этих индексов. Например, поля по upcase /noupcase строкам. Создание таких индексов динамически в настоящий момент невозможно, если такие поля в таблице отсутствуют (т.е. не было других индексов, содержащих в качестве сегмента это поле).
Для Oracle временные таблицы создаются в схеме пользователя, в отличии от основных таблиц БД. Однако особенностью временных таблиц Оракла является то, что нельзя создавать индексы во временных таблицах, если в них есть данные.
Поэтому, чтобы обеспечить возможность создания индексов динамически, нужно указать режим ctmDynamicIndex. При этом будет создаваться не временная таблица Оракла, а обычная, но опять же, в схеме пользователя. Это создаст у пользователя видимость индивидуальной работы и позволит создать индекс динамически.
Есть предположение (не проверенное на практике), что временные таблицы Оракла должны работать быстрее обычных (иначе к чему им лишние ограничения).
В Оракле временные таблицы живут вечно, но
эмулирует это и сам удаляет временные таблицы. Но неправильно написанные алгоритмы могут попадать на уже созданные и не убитые временные таблицы.Начиная с Атлантис 5.3.08