FirebirdSQL logo

RDB$GET_TRANSACTION_CN()

Disponible en

DSQL, PSQL

Syntaxe
RDB$GET_TRANSACTION_CN (transaction_id)
Table 1. paramètres de fonction RDB$GET_TRANSACTION_CN
Paramètre Description

transaction_id

Numéro de transaction (identifiant)

Le type de résultat renvoyé :

BIGINT

Renvoie le numéro d’engagement pour une transaction donnée.

Note

Les mécanismes internes de Firebird utilisent un entier non signé de 8 octets pour le Commit Number et un entier non signé de 6 octets pour le numéro de transaction. Par conséquent, même si le langage SQL n’a pas d’entiers non signés, et que RDB$GET_TRANSACTION_CN renvoie un BIGINT signé, vous ne pouvez pas voir un numéro de confirmation négatif, sauf pour quelques valeurs spéciales utilisées pour les transactions non confirmées.

Si la fonction RDB$GET_TRANSACTION_CN renvoie une valeur supérieure à 1, il s’agit du (Commit Number) réel de la transaction, c’est-à-dire que la transaction a été validée après le démarrage de la base de données.

Dans d’autres cas, la fonction peut renvoyer l’un des résultats suivants indiquant l’état de validation de la transaction :

-2

transactions mortes (annulées) ;

-1

Transactions suspendues (en état de limbo 2PC transactions) ;

 0

transactions actives ;

 1

pour les transactions validées avant le démarrage de la base de données ou avec un numéro inférieur à OIT (Oldest Interesting Transaction) ;

NULL

: Si le numéro de transaction est NULL ou supérieur à Transaction suivante.

Example 1. Utilisation de RDB$GET_TRANSACTION_CN
select rdb$get_transaction_cn(current_transaction) from rdb$database;

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

Retourne le numéro de commit de la transaction donnée. Le type de résultat est BIGINT.

Note
Remarques :
le moteur utilise en interne des entiers non signés de 8 octets pour les numéros de commit, et des entiers non signés de 6 octets pour les numéros de transaction. Ainsi, malgré que le langage SQL n'ait pas d'entiers non signés et que RDB$GET_TRANSACTION_CN retourne BIGINT signés, il est impossible de voir des nombres de commit négatifs à l'exception des quelques valeurs spéciales utilisées pour les transactions non commises.
En résumé, les nombres retournés par RDB$GET_TRANSACTION_CN peuvent avoir les valeurs suivantes :
-2 - la transaction est morte (annulée)
-1 - la transaction est dans les limbes
 0 - la transaction est active,
 1 - la transaction a été effectuée avant le démarrage de la base de données ou moins que la base de données.
	 Transaction intéressante la plus ancienne
>1 - transaction effectuée après le démarrage de la base de données
NULL - le numéro de transaction donné est NULL ou supérieur à celui de la base de données Next Transaction (Transaction suivante)
Voir aussi README.read_consistency.md

Format : RDB$GET_TRANSACTION_CN( <numéro de transaction> )

Exemples :

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

Pour plus d’informations sur le Commit Number, reportez-vous aux Firebird 4.0 Release Notes.

RDB$ROLE_IN_USE()

Disponible en

DSQL, PSQL

Syntaxe
RDB$ROLE_IN_USE (role_name)
Table 1. paramètres de fonction RDB$ROLE_IN_USE
Paramètre Description

role_name

Le nom du rôle dont l’utilisation est contrôlée.

type de résultat de retour

BOOLEAN

La fonction RDB$ROLE_IN_USE retourne si le rôle est utilisé par l’utilisateur actuel.

Note

Cette fonction vous permet de vérifier l’utilisation de n’importe quel rôle : ceux spécifiés explicitement (lors de la connexion ou modifiés à l’aide de l’instruction SET ROLE) et ceux attribués implicitement (rôles attribués à un utilisateur à l’aide de la clause DEFAULT).

Example 1. Utilisation de la fonction RDB$ROLE_IN_USE
-- Vérifier si l'attribut explicitement attribué ou
-- rôle de MANAGER obtenu implicitement
IF (RDB$ROLE_IN_USE('MANAGER')) THEN
BEGIN
  ...
END
Example 2. Liste des rôles utilisés par la connexion actuelle
SELECT * FROM RDB$ROLES WHERE RDB$ROLE_IN_USE(RDB$ROLE_NAME)
Voir aussi :

GRANT ROLE, SET ROLE, CURRENT_ROLE.