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ètreDescription

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.