RELEASE_LOCK()

释放当前会话持有的指定用户级 advisory 锁的一次引用。

语法

RELEASE_LOCK(name)

参数

参数

说明

name

要释放的锁名称,不区分大小写。

返回值

  • 当前会话成功释放一次锁引用时返回 1

  • 锁存在但由其他会话持有时返回 0

  • 指定锁不存在或输入无效时返回 NULL

使用说明

  • 同一会话多次调用 GET_LOCK() 会增加引用计数;调用相同次数的 RELEASE_LOCK() 后锁才会空闲。

  • 源码依据:test/distributed/cases/function/user_lock.sql

示例

DROP DATABASE IF EXISTS release_lock_demo;
CREATE DATABASE release_lock_demo;
USE release_lock_demo;

SELECT GET_LOCK('refresh_cache', 0);
SELECT GET_LOCK('refresh_cache', 0);
SELECT RELEASE_LOCK('refresh_cache') AS first_release;
SELECT RELEASE_LOCK('refresh_cache') AS final_release;
SELECT IS_FREE_LOCK('refresh_cache') AS is_free;

DROP DATABASE release_lock_demo;

另请参阅