Пытается получить блокировку по имени, заданном строкой строка, с таймаутом длительностью таймаут секунд. Возвращает 1, если блокировка получена успешно, 0, если время ожидания превысило таймаут (например, из-за того, что другой клиент уже заблокировал это имя), либо NULL, если произошла ошибка (такая как переполнение памяти или уничтожение потока командойmysqladmin kill ). Если у вас есть блокировка, полученная через GET_LOCK(), она снимается после выполненияRELEASE_LOCK(), нового вызова GET_LOCK() либо разрыва соединения (как нормального, так и ненормального).
Эта функция может использоваться для реализации блокировок приложений или для эмуляции блокировок записей. Имена блокируются в глобальном контексте сервера. Если имя блокировано одним клиентом, GET_LOCK() блокирует любой запрос другого клиента на получение блокировки с тем же именем. Это позволяет клиентам согласовывать попытки доступа к общим ресурсам.
mysql> SELECT GET_LOCK('lock1',10) ;-> 1 mysql> SELECT IS_FREE_LOCK('lock2');-> 1 mysql> SELECT GET_LOCK('lock2',10);-> 1 mysql> SELECT RELEASE_LOCK('lock2');-> 1 mysql> SELECT RELEASE_LOCK('lockl');-> NULL Следует отметить, что второй вызов RELEASE_LOCK() возвращает NULL, поскольку блокировка ' lock1 ' была автоматически снята вторым вызовом GET_LOCK().