Търсите наименувани ключалки (внимавайте, опасни неща, не експериментирайте с ключалки на производствени сървъри :D).
Разгледайте:
A1 :Изберете уникален низ за заключване и използвайте GET_LOCK
върху него (да кажем, GET_LOCK('conversation_' || [id])
; ако върне 1
ключалката е твоя. Направете каквото искате и по-късно извикайте RELEASE_LOCK
(отчитане на всички възможни сценарии, включително грешки).
A2 :Вторият параметър на GET_LOCK
е таймаут в секунди . Ако операцията изтече GET_LOCK
ще върне 0
.
От официалната документация
Удебелените са мои:
- Означава, че можете да държите само едно заключване на връзка (не е проблем за вашия потребителски случай)
- Означава, че ключалките ще бъдат освободени, след като затворите връзката
- Означава, че две различни връзки (дори от един и същ пул) може да не придобият един и същ вид наведнъж.