ALTER SESSION RESET
Сброс сессионного окружения.
DSQL
ALTER SESSION RESET
Сбрасывает сеансовое окружение (подключения) к исходному состоянию.Эта функциональность полезна если сеанс используется повторно, вместо того чтобы производить отключение/подключение.
Данный оператор делает следующее:
-
генерируется ошибка (
isc_ses_reset_err
), если в текущем соединении существует какая-либо открытая транзакция, кроме текущей транзакции и подготовленных транзакций 2PC, которые разрешены и игнорируются этой проверкой; -
системная переменная
RESETTING
устанавливается вTRUE
; -
запускаются триггеры базы данных на событие
ON DISCONNECT
, если они присутствуют и разрешены для текущего соединения; -
текущая пользовательская транзакция откатывается (
ROLLBACK
), если она есть. Если в текущей активной транзакции были произведены изменения, то будет выдано предупреждение; -
сбрасывает установленные параметры
DECFLOAT
(BIND
,TRAP
иROUND
) в значения по умолчанию; -
сбрасывает тайм-ауты сессии и оператора в 0;
-
удаляет все контекстные переменные из пространства имён
USER_SESSION
; -
сбрасывает роль в значение переданное в DPB (указанное при подключении) и очищает кеш привилегий (если роль была изменена с помощью оператора SET ROLE);
-
очищает содержимое всех используемых глобальных таблиц уровня соединения (
GLOBAL TEMPORARY TABLE … ON COMMIT PRESERVE ROWS
); -
запускаются триггеры базы данных на событие
ON CONNECT
, если они присутствуют и разрешены для текущего соединения; -
начинает новую транзакцию с теми же свойствами, что и транзакция, которая была отменена (если транзакция присутствовала до сброса);
-
системная переменная
RESETTING
устанавливается вFALSE
.
Обработка ошибок
Ошибка, возникшая в триггере ON DISCONNECT
, прерывает сброс сеанса и оставляет состояние сеанса неизменным.Такие ошибки сообщаются с кодом основной ошибки isc_session_reset_err
и текстом ошибки“Cannot reset user session”.
Ошибки, возникающие после того, как триггеры ON DISCONNECT
выполнены, прерывают выполнение оператора сброса сеанса и само соединение.Такие ошибки сообщались с кодом основной ошибки isc_session_reset_failed
и текстом ошибки“Reset of user session failed. Connection is shut down”.Последующие операции по подключению (кроме отсоединения) завершатся ошибкой isc_att_shutdown
.