Когда будут удалены данные в временной таблице сеанса Oracle?
Я прочитал, что в сессионных таблицах данные сохраняются в процессе фиксации. На словах Спросить Tom.
ON COMMIT PRESERVE ROWS делает это временным сеансом Таблица. строки будут оставаться в этой таблице до выхода из системы. Только я вижу их, хотя ни одна другая сессия никогда не увидит "мои" строки даже после того, как я совершают
Проблемная фраза для меня здесь "до выхода". Возьмем случай с веб-приложением, которое поддерживает одно соединение с БД. Таким образом, это означает, что все пользователи, зарегистрированные в веб-приложении, будут совместно использовать один и тот же сеанс БД. Итак, означает ли это, что все пользователи будут видеть один и тот же контент во временной таблице?
В практическом веб-приложении обычно мы поддерживаем несколько соединений с БД. Эти соединения поддерживаются в "пуле", и они используются повторно для многих пользователей. В этом случае поведение может быть довольно неустойчивым, и пользователь может просматривать данные, заполненные последним пользователем.
Ответы
Ответ 1
Именно поэтому Oracle предоставляет опцию ON ON COMMIT DELETE ROWS.
Данные в глобальных временных таблицах могут иметь область сеанса (т.е. ON COMMIT PRESERVE ROWS) или область транзакции (ON COMMIT DELETE ROWS).
Очевидно, что в случае объединения пула соединений и общих серверов/общих сеансов вам понадобится область транзакций (ON COMMIT DELETE ROWS).
Надеюсь, что это поможет.