Je bent op zoek naar sloten met een naam (voorzichtig, gevaarlijk spul, kom niet aan het experimenteren met sloten op productieservers :D).
Kijk eens naar:
A1 :Kies een unieke string om te vergrendelen en gebruik GET_LOCK
erop (zeg, GET_LOCK('conversation_' || [id])
; als het 1
teruggeeft het slot is van jou. Doe wat je wilt en bel later RELEASE_LOCK
(rekening houdend met alle mogelijke scenario's, inclusief fouten).
A2 :De tweede parameter van GET_LOCK
is een time-out in seconden . Als de bewerking een time-out heeft GET_LOCK
retourneert 0
.
Uit de officiële documentatie
Vetgedrukt zijn van mij:
- Betekent dat u slechts één slot per verbinding kunt vasthouden (geen probleem voor uw gebruikerscase)
- Betekent dat vergrendelingen worden vrijgegeven zodra u sluit de verbinding
- Betekent dat twee verschillende verbindingen (zelfs van dezelfde pool) mogelijk niet in één keer hetzelfde uiterlijk krijgen.