Skip to content

更新数据节点

更新数据节点用于修改指定数据表中已经存在的记录,对应常规数据库操作中的 UPDATE。节点通过可视化方式配置目标表、更新字段和更新条件,无需编写 SQL。

节点会更新所有符合条件的记录。更新前必须确认条件范围,尤其不能把空条件当作安全默认;复杂的跨表更新、计算表达式或事务操作应重新设计流程,必要时使用 SQL 自定义节点并增加权限、审计和回滚方案。

添加与配置

在节点面板的 数据库 分类中添加 更新数据 节点。属性面板依次提供数据表、待更新字段、更新条件、输出和异常处理配置。

更新数据节点主要配置

截图示例在 daily_expenses 表中查找 price 等于 100 的记录,并把 price 更新为 120

数据表

单击 添加数据表,从资源库数据库中选择目标表。每个更新数据节点只支持操作一张数据表;选中后可以移除并重新选择。

配置前应确认:

  • 数据表属于正确的工作空间和运行环境;
  • 当前执行身份具有更新权限;
  • 字段结构、类型、必填约束和唯一约束符合预期;
  • 多用户数据隔离、调试数据隔离等能力已在目标环境实际验证。

试运行可能修改真实数据。应使用专门测试表或可恢复的测试记录,并在验证完成后按数据治理规则处理。

选择并设置字段

单击 选择并设置字段 右侧的加号,从数据表可更新的自定义字段中选择目标字段。字段类型由数据表结构确定。

字段值支持:

  • 固定值:直接填写常量;
  • 引用变量:引用开始节点、上游节点输出或流程变量,在运行时动态生成更新值。

配置时需注意:

  • 值的类型必须与数据表字段类型一致;
  • 唯一字段的新值不能与其他记录冲突;
  • 未显示在可选列表中的系统字段通常由平台维护,不应强行更新;
  • 引用变量可能为空时,应在上游先校验;
  • 同一字段不要重复配置,避免最终写入值不明确。

至少选择一个待更新字段。修改字段类型或数据表结构后,应重新打开节点核对字段和值。

更新条件

更新条件决定哪些记录会被修改。每个条件由字段、运算符和值组成,值可以填写固定值,也可以引用上游变量。

运算符随字段类型变化:

字段类型支持的运算符
字符串等于、不等于、模糊匹配、不模糊匹配、属于、不属于、为空、不为空
整数、数字等于、不等于、大于、小于、大于等于、小于等于、属于、不属于、为空、不为空
时间等于、不等于、大于、小于、大于等于、小于等于、为空、不为空
布尔等于、不等于、为空、不为空、为真、为假

添加多个条件后,可以选择“且”或“或”。多条件默认使用“且”;仍应在界面中明确核对,不要依赖默认值推断业务范围。

空条件可能造成全表更新

正式流程必须至少添加一个可验证的条件,并在更新前使用相同条件执行查询,确认命中数量和样例记录。

优先使用唯一 ID、业务唯一键等精确条件。模糊匹配、“不等于”或“或”条件可能大幅扩大更新范围,应格外谨慎。

输出

更新数据节点输出与异常配置

更新数据节点提供两个固定输出:

输出类型说明
outputListArray<Object>列表输出;实际内容应通过试运行确认后再配置和引用
rowNumInteger本次更新影响的记录数量

正式流程不应依赖未经验证的 outputList 内容;需要判断更新结果时,优先检查 rowNum,需要更新后完整记录时再使用查询节点读取。

默认输出中未定义 errorBodyisSuccess,异常处理应通过对应分支或运行结果处理。

异常处理

新建节点的默认设置为:

  • 整体执行超时:60 秒;
  • 重试次数:不重试;
  • 异常处理方式:中断流程。

更新属于有副作用的写操作。请求超时不代表数据库一定没有更新成功,不要在没有幂等保障时直接开启重试。确需重试时,应确认重复执行不会产生错误状态,并通过唯一条件、版本字段或其他并发控制防止误更新。

如果业务允许失败后继续,应在异常分支中记录目标记录、更新值和失败原因,并设计人工处理或补偿流程;不要吞掉错误后把更新当作成功。

安全更新流程

建议按以下顺序设计正式流程:

  1. 使用查询节点按相同条件读取目标记录;
  2. 检查命中数量是否处于允许范围;
  3. 对关键字段保留更新前值或审计记录;
  4. 执行更新节点;
  5. 检查 rowNum 是否符合预期;
  6. 必要时再次查询,确认更新后的字段值;
  7. 对异常或数量不符的情况进入人工核对或补偿分支。

示例:调整费用金额

  1. 选择 daily_expenses 数据表;
  2. 在待更新字段中选择 price,设置新值为 120
  3. 添加更新条件:price 等于 100
  4. 使用相同条件预先查询并确认目标记录;
  5. 试运行节点,检查 rowNum
  6. 再次查询目标记录,确认值已经更新。

真实业务中应尽量使用记录 ID 或业务唯一键作为条件,示例中的金额条件只用于展示字段和值配置方式。

常见问题

为什么更新了多条记录?

检查是否遗漏条件、使用了“或”关系,或采用了模糊匹配、不等于等宽范围运算符。用相同条件执行查询,查看实际命中范围,再收紧条件。

为什么没有任何记录被更新?

依次核对数据表、运行环境、字段类型、条件值和条件关系。还要确认目标记录确实存在于执行环境,并检查执行身份是否具有更新权限。

为什么节点提示唯一约束冲突?

更新后的值已经被其他记录占用。先查询冲突记录,并根据业务选择停止、合并或改用其他值,不能通过重复重试解决唯一约束问题。

为什么 outputList 没有预期字段?

应通过试运行确认实际返回结构;需要更新后的完整记录时,建议在更新后追加查询节点。

为什么超时后不能直接重试?

超时只表示调用方没有及时收到结果,数据库操作可能已经成功。直接重试可能重复触发更新流程、审计或其他下游副作用,应先建立幂等与状态确认机制。

更新数据节点和 SQL 自定义节点怎么选?

单表字段赋值和条件筛选优先使用更新数据节点。只有可视化配置无法表达计算、关联或复杂 SQL 时才使用 SQL 自定义节点,并加强权限、事务和回滚控制。