---
title: "GET_LOCK - OceanBase 数据库 V4.3.1 | OceanBase 文档中心"
description: GET_LOCK 描述 该函数用于尝试获取一个带有特定名称（ str ）的锁。当一个会话成功地获取了一个特定名称的锁之后，其他任何会话在尝试获取同名的锁时都会被阻塞（即被迫等待），直到原来持有该锁的会话释放该锁为止。 使用 GET_LOCK() 函数获取的锁可以通过执行 RELEASE_LOCK() 来显式释放，除此…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.1

# GET_LOCK

更新时间：2026-04-10 11:58:01

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.1/zh-CN/700.reference/500.sql-reference/100.sql-syntax/200.common-tenant-of-mysql-mode/400.functions-of-mysql-mode/920.lock-functions-of-mysql-mode/200.get-lock-of-mysql-mode.md)  

## 描述

该函数用于尝试获取一个带有特定名称（`str`）的锁。当一个会话成功地获取了一个特定名称的锁之后，其他任何会话在尝试获取同名的锁时都会被阻塞（即被迫等待），直到原来持有该锁的会话释放该锁为止。

使用 `GET_LOCK()` 函数获取的锁可以通过执行 `RELEASE_LOCK()` 来显式释放，除此之外，当会话终止时，无论是正常结束还是异常结束，该会话持有的锁都会被隐式释放。

#### 注意

使用 `GET_LOCK()` 获得的锁不会因事务的提交或回滚而被释放。

## 语法

```sql
GET_LOCK('str', timeout)

```

## 说明

### 参数解释

- `str`: 指定锁的名称，字符串类型。
 - `timeout`: 指定等待锁释放的超时时间（以秒为单位）。取值如下：

     - 取值可以是一个 0 或者正数。
     - 也可以是负值，则表示等待时间是无限的，即会话将一直等待直至获取到锁。

### 返回值

- 返回 1：表示锁已成功获取。此时调用 `GET_LOCK` 的那个会话拥有了锁，其他任何尝试获取同名锁的操作都将不会成功，除非这个锁被释放。
 - 返回 0：表示获取锁的尝试由于超时而失败。这通常意味着锁已经被另一个会话获取并且在超时期间没有被释放。
 - 返回 `NULL`：表示尝试获取锁时发生错误，这可能是由于内存不足，或者尝试获取锁的线程被强制结束。

## 示例

1. 在会话 1 中执行下面命令，尝试获取名为 `my_lock` 的锁，最多等待 10 秒。

   ```shell
   obclient [(none)]> SELECT GET_LOCK('my_lock', 10);

   ```

   返回结果如下：

   ```shell
   +-------------------------+
   | GET_LOCK('my_lock', 10) |
   +-------------------------+
   |                       1 |
   +-------------------------+
   1 row in set

   ```

   返回结果为 1，表示锁 `my_lock` 已成功获取。
 2. 在会话 2 中执行下面命令，尝试获取名为 `my_lock` 的锁，最多等待 10 秒。

   ```

   返回结果如下：

   ```shell
   +-------------------------+
   | GET_LOCK('my_lock', 10) |
   +-------------------------+
   |                       0 |
   +-------------------------+
   1 row in set

   ```

   返回结果为 0，表示获取锁 `my_lock` 的尝试由于超时而失败。

## 相关文档

[RELEASE_LOCK](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000823002)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
