> ## Documentation Index
> Fetch the complete documentation index at: https://help.teable.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 更新记录

> 在工作流中修改已有记录的字段

<Tip>
  我们强烈建议使用运行脚本来搭建自动化，因为它可以覆盖所有操作行为，包括原本需要手动搭建的操作。你只需在 AI 对话中描述需求即可。

  请注意：如果你手动添加操作，AI 后续将无法识别或修改它们。
</Tip>

## 用 AI 创建

打开表格右侧边栏的 AI 对话，描述你的需求。

AI 会为你处理一切：选择合适的触发器和操作，映射字段，自动配置整个工作流。

只需描述一次目标，工作流即刻就绪，无需手动配置。

更新已有记录中的一个或多个字段。只有你显式映射的字段会被修改，未映射的字段保持原值不变。

## 配置

| 设置    | 必填 | 说明                           |
| ----- | -- | ---------------------------- |
| 表格    | 是  | 记录所在的表格                      |
| 记录 ID | 是  | 要更新的记录——支持变量引用，也支持逗号分隔的多个 ID |
| 字段映射  | 是  | 将每个需要修改的字段映射为新值              |

## 如何设置

1. 在工作流中添加**更新记录**操作。
2. 选择记录所在的表格。
3. 设置记录 ID。通常通过 **+** 按钮引用触发器中的记录 ID，或前序"查询记录"步骤返回的记录 ID。
4. 为需要修改的字段设置新值（静态值或变量）。
5. 点击**测试**验证更新是否正确执行。

## Record ID 来源

记录 ID 是定位要更新哪条记录的关键。常见的来源：

| 来源          | 说明                                      |
| ----------- | --------------------------------------- |
| 触发器输出       | "记录更新时"、"记录创建时"、"按钮点击时"等触发器都会输出当前记录的 ID |
| 查询记录步骤      | "查询记录"操作返回的记录数组中，每条记录都包含 ID             |
| Webhook 请求体 | 外部系统通过 Webhook 传入的记录 ID                 |
| 手动输入        | 直接填写固定的记录 ID（适用于始终更新同一条记录的场景）           |

<Tip>需要同时更新多条记录？可以传入逗号分隔的多个记录 ID，或使用[循环执行](../logic/loop-run)配合"查询记录"的结果来批量更新。</Tip>

## 部分更新说明

更新操作是**部分更新**（PATCH 语义）：只有你在字段映射中明确设置了新值的字段才会被修改。其他字段的值保持不变。这意味着：

* 你不需要重新设置所有字段，只需映射要修改的字段。
* 如果想清空某个字段，可以将其映射为空值。

## 避免触发循环

<Warning>如果工作流使用"记录更新时"触发器，而后续步骤中又更新了同一表格同一记录的被监听字段，会导致工作流再次被触发，形成无限循环。</Warning>

避免方法：

* **排除自动化字段**：在"记录更新时"触发器的监听字段中，不要包含会被自动化修改的字段（如时间戳、状态标记等）。
* **使用筛选条件**：在触发器中添加筛选条件，例如"处理标记不等于已处理"，在更新操作中同时将"处理标记"设为"已处理"。
* **更新不同字段**：确保操作更新的字段不在触发器的监听范围内。

## 适用场景

* **审批流程自动化**：用户点击"审批通过"按钮后，自动将记录的状态更新为"已通过"，写入审批时间，并发送通知邮件给申请人。
* **外部事件驱动更新**：收到支付平台的 Webhook 回调后，根据订单号找到对应记录，更新支付状态和支付时间。
* **批量状态更新**：定时查询所有截止日期已过但状态为"进行中"的任务，批量将状态更新为"逾期"。
* **数据清洗与补全**：使用 AI 生成操作分析记录内容，将分类结果写回记录的分类字段。

## 注意事项

* 更新操作会触发同一表格上的"记录更新时"触发器，请注意避免循环。
* 支持[跨 Base 访问](/zh/basic/automation/actions/records/cross-base)，可以更新其他 Base 中的记录。
* 支持[循环执行](../logic/loop-run)，可以批量更新多条记录。
* 使用逗号分隔的多个记录 ID 时，所有记录会收到相同的字段值。如需为不同记录设置不同值，请使用[循环执行](../logic/loop-run)。
* 如果指定的记录 ID 不存在，操作会执行失败。建议在前序步骤中验证记录是否存在。

## 相关文档

* [创建记录](/zh/basic/automation/actions/records/create-record)
* [查询记录](/zh/basic/automation/actions/records/get-records)
* [跨 Base 访问](/zh/basic/automation/actions/records/cross-base)
* [记录更新时（触发器）](/zh/basic/automation/trigger/records/record-updated)
