RDB$GET_TRANSACTION_CN()
DSQL, PSQL
RDB$GET_TRANSACTION_CN (transaction_id)
Paramètre | Description |
---|---|
transaction_id |
Numéro de transaction (identifiant) |
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 |
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 |
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. |