Ce face IS_FREE_LOCK()
IS_FREE_LOCK() returnează 1 dacă nimeni nu ține blocarea și 0 dacă o ține o conexiune (inclusiv cea curentă). La argumente greșite returnează NULL.
Între verificare și GET_LOCK(), altă conexiune poate lua blocarea. Pentru a ocupa sigur o blocare, apelează direct GET_LOCK(nume, 0) și verifică rezultatul.
Parametri
| Parametru | Descriere |
|---|---|
nume |
Numele blocării. |
Ce returnează
1, 0 sau NULL.
Exemple
Exemplul 1: Înainte și după GET_LOCK()
SELECT IS_FREE_LOCK('trimitere_newsletter') AS inainte;
SELECT GET_LOCK('trimitere_newsletter', 0);
SELECT IS_FREE_LOCK('trimitere_newsletter') AS dupa;
Rezultat
+---------+
| inainte |
+---------+
| 1 |
+---------+
+-------------------------------------+
| GET_LOCK('trimitere_newsletter', 0) |
+-------------------------------------+
| 1 |
+-------------------------------------+
+------+
| dupa |
+------+
| 0 |
+------+
Greșeli frecvente
- Verifici cu
IS_FREE_LOCK()și apoi iei blocarea în pasul următor. Între cele două apeluri, altă conexiune o poate lua; folosește directGET_LOCK().
Comenzi înrudite
IS_USED_LOCK(): Returnează ID-ul conexiunii care ține o blocare cu nume, sau NULL dacă este liberă.GET_LOCK(): Ia o blocare cu nume, pe tot serverul; alte conexiuni așteaptă până se eliberează.