FirebirdSQL logo

RDB$GET_TRANSACTION_CN()

Доступно в

DSQL, PSQL

Синтаксис
RDB$GET_TRANSACTION_CN (transaction_id)
Table 1. Параметры функции RDB$GET_TRANSACTION_CN
Параметр Описание

transaction_id

Номер (идентификатор) транзакции

Тип возвращаемого результата:

BIGINT

Возвращает номер подтверждения (Commit Number) для заданной транзакции.

Note

Внутренние механизмы Firebird используют беззнаковое 8-байтное целое для Commit Number и беззнаковое 6-байтное целое для номера транзакции.Поэтому, несмотря на то, что язык SQL не имеет без знаковых целых, а RDB$GET_TRANSACTION_CN возвращает знаковый BIGINT, невозможно увидеть отрицательный номер подтверждения, за исключением нескольких специальных значений, используемых для неподтверждённых транзакций.

Если функция RDB$GET_TRANSACTION_CN возвращает значение больше 1, то это фактический (Commit Number) транзакции,то есть эта транзакция была зафиксирована после запуска базы данных.

В остальных случая функция может возвращать одно из следующих результатов, указывающих статус фиксации транзакции:

-2

мёртвые транзакции (отмененные);

-1

зависшие транзакции (в состоянии limbo 2PC транзакций);

 0

активные транзакции;

 1

для транзакций подтверждённых до старта базы данных или с номером меньше чем OIT (Oldest Interesting Transaction);

NULL

если номер транзакции равен NULL или больше чем Next Transaction.

Example 1. Использование RDB$GET_TRANSACTION_CN
select rdb$get_transaction_cn(current_transaction) from rdb$database;

select rdb$get_transaction_cn(123) from rdb$database;
Note

За более детальной информацией о Commit Number, обратитесь к Firebird 4.0 Release Notes.

RDB$ROLE_IN_USE()

Доступно в

DSQL, PSQL

Синтаксис
RDB$ROLE_IN_USE (role_name)
Table 1. Параметры функции RDB$ROLE_IN_USE
Параметр Описание

role_name

Имя роли использование которой проверяется

Тип возвращаемого результата

BOOLEAN

Функция RDB$ROLE_IN_USE возвращает используется ли роль текущим пользователем.

Note

Данная функция позволяет проверить использование любой роли: указанной явно (при входе в систему или изменённой с помощью оператора SET ROLE) и назначенной неявно (роли назначенные пользователю с использованием предложения DEFAULT).

Example 1. Использование функции RDB$ROLE_IN_USE
-- Проверяем используется ли явно назначенная или
-- неявно полученная роль MANAGER
IF (RDB$ROLE_IN_USE('MANAGER')) THEN
BEGIN
  ...
END
Example 2. Список ролей используемых текущим подключением
SELECT * FROM RDB$ROLES WHERE RDB$ROLE_IN_USE(RDB$ROLE_NAME)
См. также:

GRANT ROLE, SET ROLE, CURRENT_ROLE.