跳到主要内容

# 原子获取并更新一行 (LCC.db.fetch_one)

## 声明​

    row, err = LCC.db.fetch_one(name, opts, timeout?)

## 参数​

- name
  字符串型，表名称，必须非空且不超过 256 字节
- opts
  表类型，包含以下字段：
  - `conditions`：表类型，等值筛选条件，默认 `{}`
  - `update`：表类型，获取成功后要更新的字段集合
  - `pick`：字符串型，可选 `"min"` / `"max"` / `"random"`，默认 `"min"`；基于 `id` 选择记录
- timeout
  数值型，可选；请求超时时间（秒），默认 `60`

## 返回值​

- row
  表类型，领取到的行对象；失败或未命中时为 `nil`
- err
  字符串型或 `nil`，失败时为错误描述。当未命中时返回 `'not found'`，表不存在时返回 `'unknown table'`

## 说明​

> 原子地读取并更新一条记录，适用于任务领取等并发场景。
> `update` 字段会在读取后立即写回，确保同一行不会被重复分配。
> 不传 `update` 时仍会原子选取一行，只是不写回任何字段。

## 示例​

    local row, err = LCC.db.fetch_one("任务表", {
        conditions = { 状态 = "空闲" },
        update = { 状态 = "进行中" },
        pick = "min"
    })
    if row then
        print("领取任务", row.id, row.名称)
    elseif err == "not found" then
        print("暂无空闲任务")
    end