FirebirdSQL logo
 Variables de contexteSécurité 

Mode de résolution de verrouillage

Lorsque plusieurs applications clientes travaillent avec la même base de données, des verrous peuvent apparaître. Un verrou peut se produire lorsqu’une transaction apporte des modifications non approuvées à une ligne de la table ou supprime une ligne, et qu’une autre transaction tente de modifier ou de supprimer la même ligne. De tels verrous sont appelés conflits de mise à jour.

Les blocages peuvent également se produire dans d’autres situations lors de l’utilisation de certains niveaux d’isolation des transactions.

Il existe deux modes de résolution du verrouillage : WAIT et NO WAIT.

Mode WAIT

En mode WAIT (le mode par défaut), s’il y a un conflit avec des transactions concurrentes exécutant des mises à jour de données concurrentes dans la même base de données, cette transaction attendra que la transaction concurrente se termine en la confirmant (COMMIT) ou en l’annulant (ROLLBACK). En d’autres termes, l’application du client sera mise en attente jusqu’à ce que le conflit soit résolu.

Si LOCK TIMEOUT est spécifié pour le mode WAIT, l’attente ne durera que le nombre de secondes spécifié dans cette phrase. Après ce délai, un message d’erreur sera généré : “Lock time-out on wait transaction”.

Ce mode donne des comportements légèrement différents selon le niveau d’isolation des transactions.

Dans l’API Firebird, le mode WAIT correspond à la constante isc_tpb_wait.