Ce face IS_USED_LOCK()
IS_USED_LOCK() spune cine ține blocarea: ID-ul conexiunii, același ca în SHOW PROCESSLIST și în CONNECTION_ID(). Dacă blocarea este liberă, rezultatul este NULL.
Cu ID-ul aflat, un administrator poate vedea ce face acea conexiune sau o poate închide cu KILL id dacă a rămas agățată.
Parametri
| Parametru | Descriere |
|---|---|
nume |
Numele blocării. |
Ce returnează
ID-ul conexiunii sau NULL.
Exemple
Exemplul 1: Cine ține blocarea
SELECT IS_USED_LOCK('facturare') AS inainte;
SELECT GET_LOCK('facturare', 0);
SELECT IS_USED_LOCK('facturare') = CONNECTION_ID() AS o_tine_conexiunea_mea;
Rezultat
+---------+
| inainte |
+---------+
| NULL |
+---------+
+--------------------------+
| GET_LOCK('facturare', 0) |
+--------------------------+
| 1 |
+--------------------------+
+-----------------------+
| o_tine_conexiunea_mea |
+-----------------------+
| 1 |
+-----------------------+
Exemplul 2: Văzut din altă conexiune
SELECT IS_USED_LOCK('facturare');
Rezultat în MySQL (două conexiuni deschise în paralel)
+---------------------------+
| IS_USED_LOCK('facturare') |
+---------------------------+
| 23786 |
+---------------------------+
Greșeli frecvente
- Folosești rezultatul ca adevărat/fals. Este un ID sau
NULL; pentru o verificare simplă scrieIS_USED_LOCK('x') IS NOT NULLsau foloseșteIS_FREE_LOCK().
Comenzi înrudite
IS_FREE_LOCK(): Verifică dacă o blocare cu nume este liberă (1) sau ținută de cineva (0).GET_LOCK(): Ia o blocare cu nume, pe tot serverul; alte conexiuni așteaptă până se eliberează.CONNECTION_ID(): Returnează numărul unic al conexiunii curente (ID-ul din SHOW PROCESSLIST).