RECORD_VERSION
Pour ce niveau d’isolement, l’une des deux valeurs caractéristiques supplémentaires peut être spécifiée, en fonction de la méthode de résolution des conflits souhaitée : RECORD_VERSION
et NO RECORD_VERSION
.Comme le montrent leurs noms, ils s’excluent mutuellement.
-
NO RECORD_VERSION
est une sorte de mécanisme de verrouillage à deux phases. Dans ce cas, une transaction ne peut pas lire un enregistrement qui a été modifié par une transaction active concurrente (non confirmée).-
Si la stratégie de résolution des verrouillages
NO WAIT
est spécifiée, une exception sera immédiatement levée. -
Si la stratégie de résolution des verrouillages
WAIT
est spécifiée, elle fera en sorte qu’une transaction concurrente attende la fin ou le retour en arrière.Si une transaction concurrente est annulée ou si elle est terminée et que son identifiant est plus ancien (plus petit) que celui de la transaction en cours, les modifications de la transaction en cours sont autorisées.Si une transaction concurrente est terminée et que son identifiant est plus récent (plus grand) que l’identifiant de la transaction actuelle, une erreur de conflit de verrouillage sera générée.
-
-
Lorsque vous spécifiez
RECORD_VERSION
, la transaction lit toujours la dernière version validée des enregistrements de la table, qu’il existe ou non des versions modifiées et non validées de ces enregistrements. Dans ce cas, le mode de résolution du verrouillage (WAIT
ouNO WAIT
) n’a aucun effet sur le comportement de démarrage d’une transaction.
Dans l’API Firebird, le mode de résolution de conflit NO RECORD_VERSION
est représenté par la constante isc_tpb_no_rec_version
,et RECORD_VERSION
— isc_tpb_rec_version
.
Warning
|
A partir de Firebird 4.0, ces options sont obsolètes. Par défaut, elles sont ignorées et la transaction |