Vous recherchez des verrous nommés (attention, trucs dangereux, n'hésitez pas à expérimenter avec des verrous sur des serveurs de production :D).
Jetez un oeil à :
A1 :Choisissez une chaîne unique à verrouiller et utilisez GET_LOCK
dessus (par exemple, GET_LOCK('conversation_' || [id])
; s'il renvoie 1
la serrure est à vous. Faites ce que vous voulez et appelez plus tard RELEASE_LOCK
(compte tenu de tous les scénarios possibles, y compris les erreurs).
A2 :Le deuxième paramètre de GET_LOCK
est un délai d'attente en secondes . Si l'opération expire GET_LOCK
renverra 0
.
De la documentation officielle
Les gras sont de moi :
- Signifie que vous ne pouvez détenir qu'un seul verrou par connexion (ce n'est pas un problème pour votre cas d'utilisateur)
- Signifie que les verrous seront libérés une fois que vous aurez fermé la connexion
- Signifie que deux connexions différentes (même issues du même pool) peuvent ne pas acquérir la même apparence en même temps.