FirebirdSQL logo
Niveau d’isolation READ COMMITTED

Le niveau d’isolation READ COMMITTED permet de voir toutes les modifications confirmées des données de la base de données effectuées dans d’autres transactions concurrentes dans une transaction sans la relancer. Les modifications non confirmées ne sont pas visibles dans les transactions de ce niveau d’isolation.

Pour obtenir une liste de lignes mise à jour pour une table d’intérêt, il suffit de réexécuter l’opérateur SELECT dans une transaction active READ COMMITTED sans la relancer.

Dans le mode d’isolation de l’API Firebird, READ COMMITTED correspond à la constante isc_tpb_read_committed.

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 ou NO 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 READ COMMITTED READ CONSISTENCY est lancée. Cela peut être modifié en mettant le ReadConsistency (voir firebird.conf) à 0. Dans ce cas, les options ne sont pas ignorées et fonctionnent exactement comme dans les versions précédentes. Dans les versions futures, ce paramètre dans firebird.conf peut être supprimé.