MYSQL 加锁和解锁函数
MYSQL 加锁和解锁函数。
加锁和解锁函数
- GET_LOCK(str, timeout);
- RELEASE_LOCK(str);
- IS_FREE_LOCK(str);
- IS_USED_LOCK(str);
GET_LOCK(str, timeout)获得一个锁,名字为str,超时时间为timeout;,若成功得到锁,返回值为1;若操作超时,返回0;发生错误返回NULL;
当mysql的连接断开或者使用RELEASE_LOCK(str),锁str就会被断开;
RELEASE_LOCK(str)解锁 锁str,如果锁str被解锁,则返回1;若这个锁正在被使用,则返回0;出现错误返回NULL;
IS_FREE_LOCK(str)检查名为str的锁是否可以使用,可以使用返回1,如果锁正在被使用,返回0;出现错误返回NULL;
IS_USED_LOCK(str)检查名为str的锁是否正在被使用。若被封锁,则返回使用该锁的客户端的连接标志;否则返回NULL;
SELECT
GET_LOCK('test_lock', 10),
IS_USED_LOCK('test_lock'),
IS_FREE_LOCK('test_locl'),
RELEASE_LOCK('test_lock');
| GET_LOCK('test_lock', 10) | IS_USED_LOCK('test_lock') | IS_FREE_LOCK('test_locl') | RELEASE_LOCK('test_lock') |
|---|---|---|---|
| 1 | 18 | 1 | 1 |
结果表明:
- 成功的到test_lock锁
- test_lock锁正在被USERID为18的用户使用
- 锁不空闲,如果空闲,返回值应该为0
- 释放锁成功,因为返回值为1