FirebirdSQL logo
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.

Mode NO WAIT

Si le mode NO WAIT est défini, cette transaction lèvera immédiatement une exception de base de données si un conflit de verrou se produit.

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

Note

L’option LOCK TIMEOUT est une option de transaction séparée mais ne peut être utilisée que pour les transactions WAIT. Spécifier LOCK TIMEOUT avec une transaction NO WAIT provoquera une erreur “invalid parameter in transaction parameter block -Option isc_tpb_lock_timeout is not valid if isc_tpb_nowait was used previously in TPB”.