Stai cercando lock con nome (roba attenta e pericolosa, non andare in giro a sperimentare i lock sui server di produzione :D).
Dai un'occhiata a:
A1 :scegli una stringa univoca da bloccare e usa GET_LOCK
su di esso (diciamo, GET_LOCK('conversation_' || [id])
; se restituisce 1
la serratura è tua. Fai quello che vuoi e poi chiama RELEASE_LOCK
(tenendo conto di tutti i possibili scenari, inclusi gli errori).
A2 :Il secondo parametro di GET_LOCK
è un timeout in secondi . Se l'operazione scade GET_LOCK
restituirà 0
.
Dalla documentazione ufficiale
I grassetti sono miei:
- Significa che puoi mantenere solo un blocco per connessione (non è un problema per il tuo caso utente)
- Significa che i blocchi verranno rilasciati una volta chiusi la connessione
- Significa che due diverse connessioni (anche dello stesso pool) potrebbero non acquisire lo stesso aspetto contemporaneamente.